@cognite/aura 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/DESIGN.md +869 -870
  2. package/README.md +143 -9
  3. package/dist/colors.css +30 -0
  4. package/dist/components/index.d.ts +7 -36
  5. package/dist/components/index.js +319 -350
  6. package/dist/components/ui/core/accordion/accordion.d.ts +7 -7
  7. package/dist/components/ui/core/accordion/accordion.js +49 -47
  8. package/dist/components/ui/core/action-toolbar/action-toolbar.d.ts +41 -0
  9. package/dist/components/ui/core/action-toolbar/action-toolbar.js +176 -0
  10. package/dist/components/ui/core/alert/alert.d.ts +23 -12
  11. package/dist/components/ui/core/alert/alert.js +123 -120
  12. package/dist/components/ui/core/avatar/avatar.d.ts +12 -8
  13. package/dist/components/ui/core/badge/badge.d.ts +11 -8
  14. package/dist/components/ui/core/banner/banner.d.ts +18 -28
  15. package/dist/components/ui/core/breadcrumb/breadcrumb.d.ts +10 -9
  16. package/dist/components/ui/core/breadcrumb/breadcrumb.js +98 -88
  17. package/dist/components/ui/core/button/button.d.ts +8 -5
  18. package/dist/components/ui/core/button/button.js +22 -19
  19. package/dist/components/ui/core/button-group/button-group.d.ts +7 -6
  20. package/dist/components/ui/core/card/card.d.ts +17 -16
  21. package/dist/components/ui/core/chart/chart.d.ts +69 -0
  22. package/dist/components/ui/core/chart/chart.js +215 -0
  23. package/dist/components/ui/core/chart/index.d.ts +2 -0
  24. package/dist/components/ui/core/chart/index.js +8 -0
  25. package/dist/components/ui/core/checkbox/checkbox.d.ts +13 -9
  26. package/dist/components/ui/core/checkbox/checkbox.js +32 -28
  27. package/dist/components/ui/core/code-block/code-block.d.ts +6 -9
  28. package/dist/components/ui/core/code-block/code-block.js +48 -44
  29. package/dist/components/ui/core/collapsible/collapsible.d.ts +5 -3
  30. package/dist/components/ui/core/combobox/combobox.d.ts +2 -2
  31. package/dist/components/ui/core/command/command.d.ts +11 -78
  32. package/dist/components/ui/core/command/command.js +53 -52
  33. package/dist/components/ui/core/count/count.d.ts +7 -6
  34. package/dist/components/ui/core/date-time-pickers/date-picker/date-picker.d.ts +15 -0
  35. package/dist/components/ui/core/date-time-pickers/date-picker/date-picker.js +84 -0
  36. package/dist/components/ui/core/date-time-pickers/date-picker/index.d.ts +3 -0
  37. package/dist/components/ui/core/date-time-pickers/date-picker/types.d.ts +18 -0
  38. package/dist/components/ui/core/date-time-pickers/date-picker/use-date-picker.d.ts +3 -0
  39. package/dist/components/ui/core/date-time-pickers/date-picker/use-date-picker.js +63 -0
  40. package/dist/components/ui/core/date-time-pickers/date-range-picker/date-range-picker.d.ts +15 -0
  41. package/dist/components/ui/core/date-time-pickers/date-range-picker/date-range-picker.js +99 -0
  42. package/dist/components/ui/core/date-time-pickers/date-range-picker/index.d.ts +3 -0
  43. package/dist/components/ui/core/date-time-pickers/date-range-picker/types.d.ts +25 -0
  44. package/dist/components/ui/core/date-time-pickers/date-range-picker/use-date-range-picker.d.ts +4 -0
  45. package/dist/components/ui/core/date-time-pickers/date-range-picker/use-date-range-picker.js +82 -0
  46. package/dist/components/ui/core/date-time-pickers/date-time-range-picker/date-time-range-picker.d.ts +17 -0
  47. package/dist/components/ui/core/date-time-pickers/date-time-range-picker/date-time-range-picker.js +190 -0
  48. package/dist/components/ui/core/date-time-pickers/date-time-range-picker/index.d.ts +3 -0
  49. package/dist/components/ui/core/date-time-pickers/date-time-range-picker/types.d.ts +42 -0
  50. package/dist/components/ui/core/date-time-pickers/date-time-range-picker/use-date-time-range-picker.d.ts +3 -0
  51. package/dist/components/ui/core/date-time-pickers/date-time-range-picker/use-date-time-range-picker.js +161 -0
  52. package/dist/components/ui/core/date-time-pickers/index.d.ts +8 -0
  53. package/dist/components/ui/core/date-time-pickers/index.js +8 -0
  54. package/dist/components/ui/core/date-time-pickers/shared/am-pm-scroll/am-pm-scroll.d.ts +7 -0
  55. package/dist/components/ui/core/date-time-pickers/shared/am-pm-scroll/am-pm-scroll.js +57 -0
  56. package/dist/components/ui/core/date-time-pickers/shared/calendar/calendar.d.ts +13 -0
  57. package/dist/components/ui/core/date-time-pickers/shared/calendar/calendar.js +119 -0
  58. package/dist/components/ui/core/date-time-pickers/shared/calendar-header/calendar-header.d.ts +10 -0
  59. package/dist/components/ui/core/date-time-pickers/shared/calendar-header/calendar-header.js +93 -0
  60. package/dist/components/ui/core/date-time-pickers/shared/constants.d.ts +20 -0
  61. package/dist/components/ui/core/date-time-pickers/shared/constants.js +14 -0
  62. package/dist/components/ui/core/date-time-pickers/shared/date-time-input/date-time-input.d.ts +19 -0
  63. package/dist/components/ui/core/date-time-pickers/shared/date-time-input/date-time-input.js +99 -0
  64. package/dist/components/ui/core/date-time-pickers/shared/date-time-input/range-input-display.d.ts +12 -0
  65. package/dist/components/ui/core/date-time-pickers/shared/date-time-input/range-input-display.js +68 -0
  66. package/dist/components/ui/core/date-time-pickers/shared/hooks/use-popover-state.d.ts +12 -0
  67. package/dist/components/ui/core/date-time-pickers/shared/hooks/use-popover-state.js +40 -0
  68. package/dist/components/ui/core/date-time-pickers/shared/hooks/use-range-date-state.d.ts +29 -0
  69. package/dist/components/ui/core/date-time-pickers/shared/hooks/use-range-date-state.js +63 -0
  70. package/dist/components/ui/core/date-time-pickers/shared/hooks/use-range-step-manager.d.ts +8 -0
  71. package/dist/components/ui/core/date-time-pickers/shared/hooks/use-range-step-manager.js +19 -0
  72. package/dist/components/ui/core/date-time-pickers/shared/hooks/use-single-date-state.d.ts +23 -0
  73. package/dist/components/ui/core/date-time-pickers/shared/hooks/use-single-date-state.js +32 -0
  74. package/dist/components/ui/core/date-time-pickers/shared/hooks/use-time-state.d.ts +17 -0
  75. package/dist/components/ui/core/date-time-pickers/shared/hooks/use-time-state.js +34 -0
  76. package/dist/components/ui/core/date-time-pickers/shared/scroll-cell-classes.d.ts +8 -0
  77. package/dist/components/ui/core/date-time-pickers/shared/scroll-cell-classes.js +7 -0
  78. package/dist/components/ui/core/date-time-pickers/shared/shortcuts-panel/shortcuts-panel.d.ts +13 -0
  79. package/dist/components/ui/core/date-time-pickers/shared/shortcuts-panel/shortcuts-panel.js +31 -0
  80. package/dist/components/ui/core/date-time-pickers/shared/time-picker-scroll/time-picker-scroll.d.ts +10 -0
  81. package/dist/components/ui/core/date-time-pickers/shared/time-picker-scroll/time-picker-scroll.js +52 -0
  82. package/dist/components/ui/core/date-time-pickers/utils/calendar-utils.d.ts +48 -0
  83. package/dist/components/ui/core/date-time-pickers/utils/calendar-utils.js +52 -0
  84. package/dist/components/ui/core/date-time-pickers/utils/date-range-utils.d.ts +26 -0
  85. package/dist/components/ui/core/date-time-pickers/utils/format-utils.d.ts +37 -0
  86. package/dist/components/ui/core/date-time-pickers/utils/segment-utils.d.ts +34 -0
  87. package/dist/components/ui/core/date-time-pickers/utils/time-utils.d.ts +43 -0
  88. package/dist/components/ui/core/date-time-pickers/utils/time-utils.js +15 -0
  89. package/dist/components/ui/core/date-time-pickers/utils/time-validation.d.ts +23 -0
  90. package/dist/components/ui/core/dialog/dialog.d.ts +10 -10
  91. package/dist/components/ui/core/dialog/dialog.js +12 -3
  92. package/dist/components/ui/core/dropdown-menu/dropdown-menu.d.ts +24 -47
  93. package/dist/components/ui/core/dropdown-menu/dropdown-menu.js +125 -123
  94. package/dist/components/ui/core/empty-state/empty-state.context.d.ts +10 -0
  95. package/dist/components/ui/core/empty-state/empty-state.context.js +8 -0
  96. package/dist/components/ui/core/empty-state/empty-state.d.ts +18 -0
  97. package/dist/components/ui/core/empty-state/empty-state.js +139 -0
  98. package/dist/components/ui/core/helper-text/helper-text.d.ts +7 -5
  99. package/dist/components/ui/core/hover-card/hover-card.d.ts +5 -7
  100. package/dist/components/ui/core/hover-card/hover-card.js +23 -22
  101. package/dist/components/ui/core/inline-citation/inline-citation.d.ts +10 -10
  102. package/dist/components/ui/core/inline-citation/inline-citation.js +57 -49
  103. package/dist/components/ui/core/input/input.d.ts +2 -1
  104. package/dist/components/ui/core/input/input.js +1 -1
  105. package/dist/components/ui/core/input-group/input-group.d.ts +17 -13
  106. package/dist/components/ui/core/input-group/input-group.js +35 -36
  107. package/dist/components/ui/core/kbd/kbd.d.ts +3 -2
  108. package/dist/components/ui/core/label/label.d.ts +3 -2
  109. package/dist/components/ui/core/loader/loader.d.ts +2 -2
  110. package/dist/components/ui/core/message/message.d.ts +18 -17
  111. package/dist/components/ui/core/message/message.js +387 -99
  112. package/dist/components/ui/core/pagination/pagination-size-context.d.ts +5 -0
  113. package/dist/components/ui/core/pagination/pagination-size-context.js +6 -0
  114. package/dist/components/ui/core/pagination/pagination-teleport.d.ts +11 -0
  115. package/dist/components/ui/core/pagination/pagination-teleport.js +108 -0
  116. package/dist/components/ui/core/pagination/pagination-teleport.utils.d.ts +1 -0
  117. package/dist/components/ui/core/pagination/pagination-teleport.utils.js +7 -0
  118. package/dist/components/ui/core/pagination/pagination.d.ts +41 -0
  119. package/dist/components/ui/core/pagination/pagination.js +337 -0
  120. package/dist/components/ui/core/popover/popover.d.ts +12 -16
  121. package/dist/components/ui/core/popover/popover.js +52 -51
  122. package/dist/components/ui/core/progress/progress.d.ts +7 -4
  123. package/dist/components/ui/core/prompt-input/prompt-input.d.ts +36 -103
  124. package/dist/components/ui/core/prompt-input/prompt-input.js +180 -167
  125. package/dist/components/ui/core/radio-group/radio-group.d.ts +12 -8
  126. package/dist/components/ui/core/radio-group/radio-group.js +56 -53
  127. package/dist/components/ui/core/reasoning/reasoning.d.ts +5 -5
  128. package/dist/components/ui/core/scroll-area/scroll-area.d.ts +4 -2
  129. package/dist/components/ui/core/search/search.d.ts +10 -0
  130. package/dist/components/ui/core/search/search.js +99 -0
  131. package/dist/components/ui/core/segmented-control/segmented-control.d.ts +15 -11
  132. package/dist/components/ui/core/segmented-control/segmented-control.js +4 -1
  133. package/dist/components/ui/core/select/select.d.ts +15 -14
  134. package/dist/components/ui/core/select/select.js +135 -108
  135. package/dist/components/ui/core/separator/separator.d.ts +2 -4
  136. package/dist/components/ui/core/separator/separator.js +4 -5
  137. package/dist/components/ui/core/shimmer/shimmer.d.ts +5 -5
  138. package/dist/components/ui/core/shimmer/shimmer.js +91 -52
  139. package/dist/components/ui/core/skeleton/skeleton.d.ts +2 -1
  140. package/dist/components/ui/core/sonner-toast/sonner-toast.d.ts +2 -1
  141. package/dist/components/ui/core/sources/sources.d.ts +3 -3
  142. package/dist/components/ui/core/sources/sources.js +6 -1
  143. package/dist/components/ui/core/switch/switch.d.ts +11 -0
  144. package/dist/components/ui/core/{button/button.metadata.d.ts → switch/switch.metadata.d.ts} +1 -1
  145. package/dist/components/ui/core/tabs/tabs.d.ts +21 -17
  146. package/dist/components/ui/core/tabs/tabs.js +11 -9
  147. package/dist/components/ui/core/textarea/textarea.d.ts +2 -1
  148. package/dist/components/ui/core/textarea/textarea.js +20 -18
  149. package/dist/components/ui/core/toggle/toggle.d.ts +15 -0
  150. package/dist/components/ui/core/toggle/toggle.js +74 -0
  151. package/dist/components/ui/core/tool/tool.d.ts +7 -6
  152. package/dist/components/ui/core/tool/tool.js +47 -43
  153. package/dist/components/ui/core/tooltip/tooltip.d.ts +6 -5
  154. package/dist/components/ui/core/tooltip/tooltip.js +10 -8
  155. package/dist/components/ui/core/topbar/topbar.d.ts +11 -13
  156. package/dist/eslint/index.d.ts +2 -1
  157. package/dist/index.d.ts +1 -1
  158. package/dist/lib/portal-container-context.d.ts +2 -1
  159. package/dist/lib/portal-container-context.js +3 -5
  160. package/dist/lib/utils.d.ts +1 -1
  161. package/dist/lib/utils.js +7 -7
  162. package/dist/styles.css +1 -1
  163. package/dist/styles.source.css +12 -1
  164. package/package.json +217 -14
  165. package/dist/components/ui/core/accordion/accordion.metadata.d.ts +0 -2
  166. package/dist/components/ui/core/accordion/accordion.metadata.js +0 -9
  167. package/dist/components/ui/core/alert/alert.metadata.d.ts +0 -2
  168. package/dist/components/ui/core/alert/alert.metadata.js +0 -9
  169. package/dist/components/ui/core/avatar/avatar.metadata.d.ts +0 -8
  170. package/dist/components/ui/core/avatar/avatar.metadata.js +0 -9
  171. package/dist/components/ui/core/badge/badge.metadata.d.ts +0 -2
  172. package/dist/components/ui/core/badge/badge.metadata.js +0 -8
  173. package/dist/components/ui/core/banner/banner.metadata.d.ts +0 -2
  174. package/dist/components/ui/core/banner/banner.metadata.js +0 -9
  175. package/dist/components/ui/core/breadcrumb/breadcrumb.metadata.d.ts +0 -2
  176. package/dist/components/ui/core/breadcrumb/breadcrumb.metadata.js +0 -9
  177. package/dist/components/ui/core/button/button.metadata.js +0 -9
  178. package/dist/components/ui/core/button-group/button-group.metadata.d.ts +0 -2
  179. package/dist/components/ui/core/button-group/button-group.metadata.js +0 -8
  180. package/dist/components/ui/core/card/card.metadata.d.ts +0 -8
  181. package/dist/components/ui/core/card/card.metadata.js +0 -9
  182. package/dist/components/ui/core/code-block/code-block.metadata.d.ts +0 -2
  183. package/dist/components/ui/core/code-block/code-block.metadata.js +0 -8
  184. package/dist/components/ui/core/collapsible/collapsible.metadata.d.ts +0 -2
  185. package/dist/components/ui/core/collapsible/collapsible.metadata.js +0 -9
  186. package/dist/components/ui/core/combobox/combobox.metadata.d.ts +0 -2
  187. package/dist/components/ui/core/command/command.metadata.d.ts +0 -2
  188. package/dist/components/ui/core/command/command.metadata.js +0 -9
  189. package/dist/components/ui/core/dialog/dialog.metadata.d.ts +0 -2
  190. package/dist/components/ui/core/dialog/dialog.metadata.js +0 -9
  191. package/dist/components/ui/core/dropdown-menu/dropdown-menu.metadata.d.ts +0 -2
  192. package/dist/components/ui/core/dropdown-menu/dropdown-menu.metadata.js +0 -9
  193. package/dist/components/ui/core/helper-text/helper-text.metadata.d.ts +0 -2
  194. package/dist/components/ui/core/helper-text/helper-text.metadata.js +0 -9
  195. package/dist/components/ui/core/hover-card/hover-card.metadata.d.ts +0 -2
  196. package/dist/components/ui/core/hover-card/hover-card.metadata.js +0 -8
  197. package/dist/components/ui/core/inline-citation/inline-citation.metadata.d.ts +0 -2
  198. package/dist/components/ui/core/inline-citation/inline-citation.metadata.js +0 -8
  199. package/dist/components/ui/core/input/input.metadata.d.ts +0 -2
  200. package/dist/components/ui/core/input/input.metadata.js +0 -9
  201. package/dist/components/ui/core/input-group/input-group.metadata.d.ts +0 -2
  202. package/dist/components/ui/core/input-group/input-group.metadata.js +0 -9
  203. package/dist/components/ui/core/kbd/kbd.metadata.d.ts +0 -2
  204. package/dist/components/ui/core/kbd/kbd.metadata.js +0 -9
  205. package/dist/components/ui/core/label/label.metadata.d.ts +0 -2
  206. package/dist/components/ui/core/label/label.metadata.js +0 -9
  207. package/dist/components/ui/core/loader/loader.metadata.d.ts +0 -2
  208. package/dist/components/ui/core/loader/loader.metadata.js +0 -9
  209. package/dist/components/ui/core/message/message.metadata.d.ts +0 -2
  210. package/dist/components/ui/core/popover/popover.metadata.d.ts +0 -2
  211. package/dist/components/ui/core/popover/popover.metadata.js +0 -9
  212. package/dist/components/ui/core/progress/progress.metadata.d.ts +0 -2
  213. package/dist/components/ui/core/progress/progress.metadata.js +0 -9
  214. package/dist/components/ui/core/prompt-input/prompt-input.metadata.d.ts +0 -2
  215. package/dist/components/ui/core/prompt-input/prompt-input.metadata.js +0 -9
  216. package/dist/components/ui/core/radio-group/radio-group.metadata.d.ts +0 -2
  217. package/dist/components/ui/core/radio-group/radio-group.metadata.js +0 -9
  218. package/dist/components/ui/core/reasoning/reasoning.metadata.d.ts +0 -2
  219. package/dist/components/ui/core/reasoning/reasoning.metadata.js +0 -8
  220. package/dist/components/ui/core/scroll-area/scroll-area.metadata.d.ts +0 -2
  221. package/dist/components/ui/core/scroll-area/scroll-area.metadata.js +0 -9
  222. package/dist/components/ui/core/select/select.metadata.d.ts +0 -2
  223. package/dist/components/ui/core/select/select.metadata.js +0 -9
  224. package/dist/components/ui/core/separator/separator.metadata.d.ts +0 -2
  225. package/dist/components/ui/core/separator/separator.metadata.js +0 -8
  226. package/dist/components/ui/core/shimmer/shimmer.metadata.d.ts +0 -2
  227. package/dist/components/ui/core/shimmer/shimmer.metadata.js +0 -9
  228. package/dist/components/ui/core/skeleton/skeleton.metadata.d.ts +0 -2
  229. package/dist/components/ui/core/skeleton/skeleton.metadata.js +0 -9
  230. package/dist/components/ui/core/sonner-toast/sonner-toast.metadata.d.ts +0 -2
  231. package/dist/components/ui/core/sonner-toast/sonner-toast.metadata.js +0 -9
  232. package/dist/components/ui/core/sources/sources.metadata.d.ts +0 -2
  233. package/dist/components/ui/core/textarea/textarea.metadata.d.ts +0 -2
  234. package/dist/components/ui/core/textarea/textarea.metadata.js +0 -9
  235. package/dist/components/ui/core/tool/tool.metadata.d.ts +0 -2
  236. package/dist/components/ui/core/tool/tool.metadata.js +0 -8
  237. package/dist/components/ui/core/tooltip/tooltip.metadata.d.ts +0 -8
  238. package/dist/components/ui/core/tooltip/tooltip.metadata.js +0 -9
  239. package/dist/index.js +0 -342
package/README.md CHANGED
@@ -2,30 +2,164 @@
2
2
 
3
3
  Aura exports Cognite's UI components, styles, utilities, and ESLint guidance for preserving the design system in downstream apps.
4
4
 
5
- ## DESIGN.md (Google design.md linter)
5
+ ## Using Aura in Fusion
6
6
 
7
- [`DESIGN.md`](./DESIGN.md) is linted with [`@google/design.md`](https://www.npmjs.com/package/@google/design.md) via `npx`, so Aura does not need a direct package dependency on the linter.
7
+ [`DESIGN.md`](./DESIGN.md) describes visual identity, critical interaction rules, and UX guidance for feedback, disclosure, errors, layout, and accessibility. This section covers *how to use the package* in the Fusion monorepo and host shell.
8
8
 
9
- Published installs ship this spec at the package root; you can resolve it as `@cognite/aura/DESIGN.md` (for example with `import.meta.resolve` or your bundler’s raw import).
9
+ ### Package imports
10
10
 
11
- From `fusion/libs/aura`:
11
+ Aura ships two flavours of component import. Both resolve through the package's `exports` map — never reach into `src/`.
12
+
13
+ **Per-component subpath (preferred for app code)** keeps bundles small by only pulling in what each module actually needs:
14
+
15
+ ```tsx
16
+ import { Button } from '@cognite/aura/components/button';
17
+ import { Card } from '@cognite/aura/components/card';
18
+ import { DatePicker } from '@cognite/aura/components/date-time-pickers';
19
+ ```
20
+
21
+ **Aggregate barrel** is convenient for stories, prototypes, and code that already pulls in many components. The barrel is side-effect-free (`*.css` aside) and tree-shakes well in modern bundlers, so prefer whichever style reads better at the call site:
22
+
23
+ ```tsx
24
+ import { Button, Card } from '@cognite/aura/components';
25
+ ```
26
+
27
+ Stylesheets and tokens are imported the same way regardless of which component-import style you use:
28
+
29
+ ```tsx
30
+ import '@cognite/aura/colors.css';
31
+ import '@cognite/aura/styles.css';
32
+ ```
33
+
34
+ Canonical token sources in this repo: `src/colors.css` and `src/styles.source.css`. In consuming apps, import from the published package paths above — not from `src/` next to your app code.
35
+
36
+ Do not import Aura through relative paths from another project, such as `../../../libs/aura/src/components`. Fusion resolves Aura through its package exports, so use `@cognite/aura/components` (or a per-component subpath), `@cognite/aura/colors.css`, and `@cognite/aura/styles.css`.
37
+
38
+ #### Adding a new component
39
+
40
+ Every Aura component must support **both** import styles. When you add a new component:
41
+
42
+ 1. Place its source under `src/components/ui/core/<name>/<name>.tsx`, matching the kebab-case directory used by existing components.
43
+ 2. Re-export it from the aggregate barrel in `src/components/index.ts` so `@cognite/aura/components` keeps working.
44
+ 3. Register a per-component subpath export in `libs/aura/package.json` (alphabetical order):
45
+
46
+ ```json
47
+ "./components/<name>": {
48
+ "@fusion/source": "./src/components/ui/core/<name>/<name>.tsx",
49
+ "import": "./dist/components/ui/core/<name>/<name>.js",
50
+ "types": "./dist/components/ui/core/<name>/<name>.d.ts"
51
+ }
52
+ ```
53
+
54
+ Composite components that ship as a folder (such as `date-time-pickers`) point at the folder's `index.ts` instead.
55
+
56
+ The Vite build derives library entries directly from `package.json` (`entriesFromPackageJson: true`), so once both entry points are wired the dist output and types appear automatically. The two surfaces must stay in sync — consumers should be able to choose either style without missing exports.
57
+
58
+ Aura uses Tailwind v4 package CSS entry points. Consuming Fusion apps should not add a `tailwind.config.js` just to wire Aura tokens or content paths; import `@cognite/aura/styles.css` and let Aura's exported CSS carry the theme and source directives. `styles.css` is the public stylesheet entry point for product consumers; in published external packages it resolves to the built Tailwind CSS output produced by Aura's build.
59
+
60
+ When another Fusion library exposes Aura-styled components, give that library the same self-sourcing setup instead of pushing scan rules into every consumer:
61
+
62
+ - Export a package stylesheet, for example `@cognite/example-ui/styles.css`.
63
+ - In that stylesheet, import `@cognite/aura/styles.source.css` and source the library itself. `styles.source.css` is for package stylesheets that compose Aura's Tailwind theme/source directives before adding their own `@source` rules:
64
+
65
+ ```css
66
+ @import '@cognite/aura/styles.source.css';
67
+ @source './';
68
+ ```
69
+
70
+ - If the target app already relies on `!important` style precedence, for example through styled-components overrides or existing Cogs components, add Tailwind's import modifier so Aura utilities can match that setup when necessary:
71
+
72
+ ```css
73
+ @import '@cognite/aura/styles.source.css' important;
74
+ @source './';
75
+ ```
76
+
77
+ - If the library builds or previews that stylesheet directly, include `@tailwindcss/vite` in its Vite and Storybook setup.
78
+ - Consumers should import the library stylesheet, not Aura internals. For example, an app using `@cognite/atlas-ai-react-ui` should import `@cognite/atlas-ai-react-ui/styles.css`, which can pull in Aura internally.
79
+ - Do not add cross-project `@source "../../../libs/..."` directives or `tailwind.config.js` `content` entries for other Fusion libraries. In Tailwind v4 these app-level content arrays do not replace package-owned `@source` directives.
80
+
81
+ Prefer **CVA** variants and component APIs over overriding primitive styles. Prop names, `size` values, and subcomponents are defined in:
82
+
83
+ - [Aura Storybook](https://storybook-aura-23638.fusion-preview.preview.cogniteapp.com)
84
+ - [Aura design system docs](https://docs.cognite.com/aura-design-system/get-started)
85
+ - TypeScript types from `@cognite/aura/components`
86
+
87
+ ### Fusion shell integration
88
+
89
+ The Fusion host shell owns global chrome that Aura does not ship: **Topbar**, **Sonner** toasts, **AlertDialog**, **Sheet** / **Drawer**, **Tabs**, **SegmentedControl**, and some patterns like **EmptyState**. These **must** still follow Aura tokens, [Interaction states](./DESIGN.md#interaction-states), and [Heuristics](./DESIGN.md#heuristics).
90
+
91
+ | Concern | Fusion convention |
92
+ | ------- | ----------------- |
93
+ | Primary navigation | One **Topbar**; avoid duplicating global nav in content |
94
+ | View switching | Shell **Tabs** / **SegmentedControl** when the product uses that pattern |
95
+ | Toasts | **Sonner**, bottom-right, ~4s auto-dismiss, themed with Aura tokens |
96
+ | Confirm destructive work | Shell **AlertDialog** or Aura **Dialog** with explicit copy |
97
+ | Narrow viewports | Prefer shell **Drawer** / **Dialog** over compressed multi-column chrome |
98
+
99
+ For local sub-app development against the live shell, use import map overrides — see the Fusion [subapp manual testing guide](../../.cursor/rules/subapp-manual-testing.mdc).
100
+
101
+ ### Serve and test locally
12
102
 
13
103
  ```sh
14
- npx --yes @google/design.md lint ./DESIGN.md
104
+ pnpm nx serve aura # Storybook
105
+ pnpm nx run aura:design-md-lint
15
106
  ```
16
107
 
17
- From the Fusion workspace root:
108
+ ## Optional peer dependencies
109
+
110
+ Some Aura entry points require optional peer dependencies that consumers must install themselves:
111
+
112
+ - `@cognite/aura/chart` requires `recharts >=3.7`. Add it to your app:
113
+
114
+ ```sh
115
+ pnpm add recharts
116
+ ```
117
+
118
+ Aura follows the [shadcn/ui Charts](https://ui.shadcn.com/docs/components/chart) pattern: import the shell and chrome from `@cognite/aura/chart`, and import Recharts primitives from `recharts`.
119
+
120
+ ```tsx
121
+ import { Bar, BarChart, XAxis } from 'recharts';
122
+ import {
123
+ ChartContainer,
124
+ ChartTooltip,
125
+ type ChartConfig,
126
+ } from '@cognite/aura/chart';
127
+
128
+ const config = {
129
+ runs: { label: 'Runs', color: 'var(--color-chart-fjord-color-1)' },
130
+ } satisfies ChartConfig;
131
+
132
+ <ChartContainer config={config} aria-label="Runs by day">
133
+ <BarChart data={data}>
134
+ <XAxis dataKey="day" />
135
+ <ChartTooltip />
136
+ <Bar dataKey="runs" fill="var(--color-runs)" />
137
+ </BarChart>
138
+ </ChartContainer>
139
+ ```
140
+
141
+ ## DESIGN.md
142
+
143
+ [`DESIGN.md`](./DESIGN.md) describes Aura's visual identity in the [Google design.md](https://github.com/google-labs-code/design.md) format — YAML design tokens in front matter plus markdown rationale for coding agents.
144
+
145
+ Validate structure, token references, and section order with [`@google/design.md`](https://www.npmjs.com/package/@google/design.md):
146
+
147
+ **Recommended (from the Fusion workspace root):**
18
148
 
19
149
  ```sh
20
- cd libs/aura && npx --yes @google/design.md lint ./DESIGN.md
150
+ pnpm nx run aura:design-md-lint
21
151
  ```
22
152
 
23
- Or with Nx:
153
+ **Direct CLI (from `libs/aura`):**
24
154
 
25
155
  ```sh
26
- nx run aura:design-md-lint
156
+ npx --yes @google/design.md lint ./DESIGN.md
27
157
  ```
28
158
 
159
+ Exit code `0` means the file passed (no errors). Warnings surface issues such as orphaned tokens or out-of-order sections.
160
+
161
+ Published installs ship this spec at the package root; resolve it as `@cognite/aura/DESIGN.md` (for example with `import.meta.resolve` or your bundler's raw import).
162
+
29
163
  ## ESLint
30
164
 
31
165
  Aura ships an ESLint plugin at `@cognite/aura/eslint`.
package/dist/colors.css CHANGED
@@ -235,6 +235,18 @@
235
235
  --color-mountain-800: var(--mountain-800);
236
236
  --color-mountain-900: var(--mountain-900);
237
237
  --color-mountain-950: var(--mountain-950);
238
+ --color-mountain-alpha-100: var(--mountain-alpha-100);
239
+ --color-mountain-alpha-200: var(--mountain-alpha-200);
240
+ --color-mountain-alpha-300: var(--mountain-alpha-300);
241
+ --color-mountain-alpha-400: var(--mountain-alpha-400);
242
+ --color-mountain-alpha-450: var(--mountain-alpha-450);
243
+ --color-mountain-alpha-50: var(--mountain-alpha-50);
244
+ --color-mountain-alpha-600: var(--mountain-alpha-600);
245
+ --color-mountain-alpha-650: var(--mountain-alpha-650);
246
+ --color-mountain-alpha-700: var(--mountain-alpha-700);
247
+ --color-mountain-alpha-800: var(--mountain-alpha-800);
248
+ --color-mountain-alpha-900: var(--mountain-alpha-900);
249
+ --color-mountain-alpha-950: var(--mountain-alpha-950);
238
250
  --color-mountain-black: var(--mountain-black);
239
251
  --color-mountain-white: var(--mountain-white);
240
252
  --color-muted-background: var(--muted-background);
@@ -300,6 +312,10 @@
300
312
  --color-pink-950: var(--pink-950);
301
313
  --color-popover-background: var(--popover-background);
302
314
  --color-primary-background: var(--primary-background);
315
+ --color-disabled-background-fixed-dark: var(--disabled-background-fixed-dark);
316
+ --color-disabled-foreground-fixed-dark: var(--disabled-foreground-fixed-dark);
317
+ --color-primary-background-fixed-dark: var(--primary-background-fixed-dark);
318
+ --color-primary-background-fixed-dark-hover: var(--primary-background-fixed-dark-hover);
303
319
  --color-primary-background-hover: var(--primary-background-hover);
304
320
  --color-raised-background: var(--raised-background);
305
321
  --color-red-100: var(--red-100);
@@ -322,6 +338,8 @@
322
338
  --color-ring-muted: var(--ring-muted);
323
339
  --color-secondary-background: var(--secondary-background);
324
340
  --color-secondary-background-hover: var(--secondary-background-hover);
341
+ --color-secondary-background-fixed-dark: var(--secondary-background-fixed-dark);
342
+ --color-secondary-background-fixed-dark-hover: var(--secondary-background-fixed-dark-hover);
325
343
  --color-secondary-foreground: var(--secondary-foreground);
326
344
  --color-secondary-foreground-fixed-light: var(--secondary-foreground-fixed-light);
327
345
  --color-sky-100: var(--sky-100);
@@ -874,6 +892,10 @@
874
892
  --overlay-background: var(--mountain-alpha-300);
875
893
  --popover-background: var(--mountain-white);
876
894
  --primary-background: var(--mountain-900);
895
+ --disabled-background-fixed-dark: var(--mountain-alpha-50);
896
+ --disabled-foreground-fixed-dark: var(--mountain-650);
897
+ --primary-background-fixed-dark: var(--mountain-10);
898
+ --primary-background-fixed-dark-hover: var(--mountain-50);
877
899
  --primary-background-hover: var(--mountain-700);
878
900
  --raised-background: var(--mountain-800);
879
901
  --ring: var(--gray-500);
@@ -881,6 +903,8 @@
881
903
  --ring-destructive-muted: var(--red-100);
882
904
  --ring-muted: var(--gray-200);
883
905
  --secondary-background: var(--mountain-100);
906
+ --secondary-background-fixed-dark: var(--mountain-700);
907
+ --secondary-background-fixed-dark-hover: var(--mountain-650);
884
908
  --secondary-background-hover: var(--mountain-200);
885
909
  --secondary-foreground: var(--mountain-700);
886
910
  --secondary-foreground-fixed-light: var(--mountain-200);
@@ -1028,6 +1052,8 @@
1028
1052
  --overlay-background: var(--mountain-alpha-300);
1029
1053
  --popover-background: var(--mountain-900);
1030
1054
  --primary-background: var(--mountain-10);
1055
+ --primary-background-fixed-dark: var(--mountain-10);
1056
+ --primary-background-fixed-dark-hover: var(--mountain-50);
1031
1057
  --primary-background-hover: var(--mountain-100);
1032
1058
  --raised-background: var(--mountain-700);
1033
1059
  --ring: var(--gray-500);
@@ -1035,6 +1061,10 @@
1035
1061
  --ring-destructive-muted: var(--red-900);
1036
1062
  --ring-muted: var(--gray-800);
1037
1063
  --secondary-background: var(--mountain-700);
1064
+ --disabled-background-fixed-dark: var(--mountain-alpha-950);
1065
+ --disabled-foreground-fixed-dark: var(--mountain-650);
1066
+ --secondary-background-fixed-dark: var(--mountain-700);
1067
+ --secondary-background-fixed-dark-hover: var(--mountain-650);
1038
1068
  --secondary-background-hover: var(--mountain-600);
1039
1069
  --secondary-foreground: var(--mountain-200);
1040
1070
  --secondary-foreground-fixed-light: var(--mountain-200);
@@ -1,82 +1,53 @@
1
1
  export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from './ui/core/accordion/accordion';
2
- export { AccordionMetadata } from './ui/core/accordion/accordion.metadata';
2
+ export { ActionToolbar, ActionToolbarAction, ActionToolbarActionClear, ActionToolbarActions, ActionToolbarPrimaryAction, ActionToolbarSelection, ActionToolbarSelectionSummary, } from './ui/core/action-toolbar/action-toolbar';
3
3
  export { Card, CardHeader, CardHeaderStart, CardHeaderCenter, CardHeaderEnd, CardFooter, CardFooterStart, CardFooterEnd, CardTitle, CardActions, CardDescription, CardContent, } from './ui/core/card/card';
4
- export { CardMetadata } from './ui/core/card/card.metadata';
5
4
  export { Button, buttonVariants } from './ui/core/button/button';
6
- export { ButtonMetadata } from './ui/core/button/button.metadata';
7
5
  export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants, } from './ui/core/button-group/button-group';
8
- export { ButtonGroupMetadata } from './ui/core/button-group/button-group.metadata';
9
6
  export { Avatar, AvatarImage, AvatarFallback, AvatarIcon, } from './ui/core/avatar/avatar';
10
- export { AvatarMetadata } from './ui/core/avatar/avatar.metadata';
11
7
  export { Label } from './ui/core/label/label';
12
- export { LabelMetadata } from './ui/core/label/label.metadata';
13
8
  export { CheckboxGroup, CheckboxItem, CheckboxItemControl, CheckboxItemDescription, CheckboxItemLabel, } from './ui/core/checkbox/checkbox';
14
9
  export { CheckboxMetadata } from './ui/core/checkbox/checkbox.metadata';
15
10
  export { HelperText } from './ui/core/helper-text/helper-text';
16
- export { HelperTextMetadata } from './ui/core/helper-text/helper-text.metadata';
17
11
  export { Loader } from './ui/core/loader/loader';
18
- export { LoaderMetadata } from './ui/core/loader/loader.metadata';
19
12
  export { Shimmer } from './ui/core/shimmer/shimmer';
20
- export { ShimmerMetadata } from './ui/core/shimmer/shimmer.metadata';
21
13
  export { CodeBlock, CodeBlockCollapseButton, CodeBlockCopyButton, CodeBlockDownloadButton, } from './ui/core/code-block/code-block';
22
- export { CodeBlockMetadata } from './ui/core/code-block/code-block.metadata';
23
14
  export { Separator } from './ui/core/separator/separator';
24
- export { SeparatorMetadata } from './ui/core/separator/separator.metadata';
25
15
  export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from './ui/core/tooltip/tooltip';
26
- export { TooltipMetadata } from './ui/core/tooltip/tooltip.metadata';
27
16
  export { Tool, ToolHeader, ToolContent, ToolInput, ToolOutput, } from './ui/core/tool/tool';
28
- export { ToolMetadata } from './ui/core/tool/tool.metadata';
29
17
  export { DropdownMenu, DropdownMenuPortal, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuHeader, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, DropdownMenuSectionLabel, } from './ui/core/dropdown-menu/dropdown-menu';
30
- export { DropdownMenuMetadata } from './ui/core/dropdown-menu/dropdown-menu.metadata';
31
18
  export { RadioGroup, RadioGroupItem, RadioGroupItemControl, RadioGroupItemDescription, RadioGroupItemLabel, } from './ui/core/radio-group/radio-group';
32
- export { RadioGroupMetadata } from './ui/core/radio-group/radio-group.metadata';
33
19
  export { Badge, badgeVariants } from './ui/core/badge/badge';
34
- export { BadgeMetadata } from './ui/core/badge/badge.metadata';
35
20
  export { Banner, BannerAction, BannerActions, BannerClose, BannerIcon, BannerStatus, BannerTitle, } from './ui/core/banner/banner';
36
- export { BannerMetadata } from './ui/core/banner/banner.metadata';
37
21
  export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbEllipsisButton, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbPageButton, BreadcrumbSeparator, } from './ui/core/breadcrumb/breadcrumb';
38
- export { BreadcrumbMetadata } from './ui/core/breadcrumb/breadcrumb.metadata';
39
22
  export { Topbar, TopbarAction, TopbarBreadcrumbs, TopbarCenter, TopbarIcon, TopbarLeft, TopbarMetadata, TopbarRight, TopbarThemeSwitcher, type TopbarTheme, } from './ui/core/topbar/topbar';
40
23
  export { Collapsible, CollapsibleContent, CollapsibleTrigger, } from './ui/core/collapsible/collapsible';
41
- export { CollapsibleMetadata } from './ui/core/collapsible/collapsible.metadata';
42
24
  export { HoverCard, HoverCardTrigger, HoverCardContent, } from './ui/core/hover-card/hover-card';
43
- export { HoverCardMetadata } from './ui/core/hover-card/hover-card.metadata';
44
25
  export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, } from './ui/core/select/select';
45
- export { SelectMetadata } from './ui/core/select/select.metadata';
46
26
  export { SegmentedControl, SegmentedControlButton, SegmentedControlContent, SegmentedControlList, segmentedControlButtonVariants, segmentedControlListVariants, } from './ui/core/segmented-control/segmented-control';
47
27
  export { Skeleton } from './ui/core/skeleton/skeleton';
48
- export { SkeletonMetadata } from './ui/core/skeleton/skeleton.metadata';
49
28
  export { Toaster, toast } from './ui/core/sonner-toast/sonner-toast';
50
- export { SonnerToastMetadata } from './ui/core/sonner-toast/sonner-toast.metadata';
51
29
  export { Input } from './ui/core/input/input';
52
- export { InputMetadata } from './ui/core/input/input.metadata';
53
30
  export { Kbd, KbdGroup } from './ui/core/kbd/kbd';
54
- export { KbdMetadata } from './ui/core/kbd/kbd.metadata';
55
31
  export { Progress } from './ui/core/progress/progress';
56
- export { ProgressMetadata } from './ui/core/progress/progress.metadata';
57
32
  export { Textarea } from './ui/core/textarea/textarea';
58
- export { TextareaMetadata } from './ui/core/textarea/textarea.metadata';
59
33
  export { Tabs, TabsLabel, TabsList, TabsPanel, TabsTrigger, tabsListVariants, tabsTriggerVariants, } from './ui/core/tabs/tabs';
34
+ export { Toggle, toggleVariants } from './ui/core/toggle/toggle';
60
35
  export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupText, InputGroupInput, InputGroupTextarea, } from './ui/core/input-group/input-group';
61
- export { InputGroupMetadata } from './ui/core/input-group/input-group.metadata';
62
36
  export { Alert, AlertTitle, AlertDescription, AlertActions, AlertButton, AlertClose, } from './ui/core/alert/alert';
63
- export { AlertMetadata } from './ui/core/alert/alert.metadata';
37
+ export { EmptyState, EmptyStateIcon, EmptyStateTitle, EmptyStateDescription, EmptyStateActions, } from './ui/core/empty-state/empty-state';
64
38
  export { Message, MessageContent, MessageActions, MessageAction, MessageResponse, } from './ui/core/message/message';
65
- export { PromptInputMetadata } from './ui/core/prompt-input/prompt-input.metadata';
66
39
  export { usePromptInputController, PromptInputProvider, PromptInput, PromptInputBody, PromptInputTextarea, PromptInputHeader, PromptInputFooter, PromptInputTools, PromptInputButton, PromptInputActionMenu, PromptInputActionMenuTrigger, PromptInputActionMenuContent, PromptInputActionMenuItem, PromptInputSubmit, PromptInputModelSelect, PromptInputModelSelectTrigger, PromptInputModelSelectContent, PromptInputModelSelectItem, PromptInputModelSelectValue, PromptInputHoverCard, PromptInputHoverCardTrigger, PromptInputHoverCardContent, PromptInputTabsList, PromptInputTab, PromptInputTabLabel, PromptInputTabBody, PromptInputTabItem, PromptInputCommand, PromptInputCommandInput, PromptInputCommandList, PromptInputCommandEmpty, PromptInputCommandGroup, PromptInputCommandItem, PromptInputCommandSeparator, } from './ui/core/prompt-input/prompt-input';
67
40
  export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, } from './ui/core/dialog/dialog';
68
- export { DialogMetadata } from './ui/core/dialog/dialog.metadata';
69
41
  export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, } from './ui/core/command/command';
70
- export { CommandMetadata } from './ui/core/command/command.metadata';
71
42
  export { Count, countVariants } from './ui/core/count/count';
72
- export { InlineCitationMetadata } from './ui/core/inline-citation/inline-citation.metadata';
73
43
  export { InlineCitation, InlineCitationGroup, InlineCitationText, InlineCitationCard, InlineCitationCardTrigger, InlineCitationCardBody, InlineCitationSource, InlineCitationQuote, InlineCitationLink, type InlineCitationLinkProps, } from './ui/core/inline-citation/inline-citation';
74
44
  export { Reasoning, ReasoningContent, ReasoningHeader, ReasoningItem, } from './ui/core/reasoning/reasoning';
75
- export { ReasoningMetadata } from './ui/core/reasoning/reasoning.metadata';
76
45
  export { ScrollArea, ScrollBar } from './ui/core/scroll-area/scroll-area';
77
- export { ScrollAreaMetadata } from './ui/core/scroll-area/scroll-area.metadata';
46
+ export { Search } from './ui/core/search/search';
78
47
  export { Popover, PopoverClose, PopoverContent, PopoverDescription, PopoverHeader, PopoverHeaderContent, PopoverSlot, PopoverTitle, PopoverTrigger, } from './ui/core/popover/popover';
79
- export { PopoverMetadata } from './ui/core/popover/popover.metadata';
48
+ export { Pagination, PaginationContent, PaginationEllipsis, PaginationFirst, PaginationItem, PaginationLast, PaginationLink, PaginationNext, PaginationPrevious, PaginationResultsPerPage, PaginationResultsPerPageLabel, PaginationSelectTrigger, PaginationStatus, PaginationTeleport, } from './ui/core/pagination/pagination';
80
49
  export { Sources, SourcesTitle, Source } from './ui/core/sources/sources';
50
+ export { DatePicker, DateRangePicker, DateTimeRangePicker, } from './ui/core/date-time-pickers';
51
+ export type { DatePickerProps, DateRangePickerProps, DateTimeRangePickerProps, ShortcutItem, TimeFormat, } from './ui/core/date-time-pickers';
81
52
  export { PortalContainerContext } from '../lib/portal-container-context';
82
53
  export type { ComponentMeta, ComponentStatusType } from '../lib/types';