@nordmanai/nif 0.0.0-stage → 0.2.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 (398) hide show
  1. package/README.md +79 -2
  2. package/bin/nif.mjs +196 -0
  3. package/dist/index.d.ts +124 -0
  4. package/dist/index.js +12961 -0
  5. package/dist/styles.css +2 -0
  6. package/dist/tokens.css +72 -0
  7. package/dist/ui/components/nm-ai/nm-ai.d.ts +222 -0
  8. package/dist/ui/components/nm-avatar/nm-avatar.d.ts +12 -0
  9. package/dist/ui/components/nm-bar-overflow/nm-bar-overflow.d.ts +15 -0
  10. package/dist/ui/components/nm-bar-overflow/use-bar-overflow.d.ts +7 -0
  11. package/dist/ui/components/nm-brand-logo/nm-brand-logo.d.ts +10 -0
  12. package/dist/ui/components/nm-breadcrumb/nm-breadcrumb.d.ts +11 -0
  13. package/dist/ui/components/nm-button/nm-button.d.ts +19 -0
  14. package/dist/ui/components/nm-button-group/nm-button-group.d.ts +17 -0
  15. package/dist/ui/components/nm-calendar/nm-calendar.d.ts +3 -0
  16. package/dist/ui/components/nm-card/nm-card.d.ts +34 -0
  17. package/dist/ui/components/nm-chatbox/nm-chatbox-icon.d.ts +7 -0
  18. package/dist/ui/components/nm-chatbox/nm-chatbox.d.ts +19 -0
  19. package/dist/ui/components/nm-checkbox/nm-checkbox.d.ts +2 -0
  20. package/dist/ui/components/nm-chip/nm-chip.d.ts +38 -0
  21. package/dist/ui/components/nm-code-block/nm-code-block.d.ts +55 -0
  22. package/dist/ui/components/nm-collection/nm-collection-bar.d.ts +16 -0
  23. package/dist/ui/components/nm-collection/nm-collection-grid.d.ts +9 -0
  24. package/dist/ui/components/nm-collection/nm-collection-query.d.ts +18 -0
  25. package/dist/ui/components/nm-collection/nm-collection-row-menu.d.ts +7 -0
  26. package/dist/ui/components/nm-collection/nm-collection-table.d.ts +13 -0
  27. package/dist/ui/components/nm-collection/nm-collection-tile-actions.d.ts +7 -0
  28. package/dist/ui/components/nm-collection/nm-collection-title.d.ts +10 -0
  29. package/dist/ui/components/nm-collection/use-collection-scroll-reveal.d.ts +3 -0
  30. package/dist/ui/components/nm-color-picker/nm-color-picker.d.ts +15 -0
  31. package/dist/ui/components/nm-combobox/nm-combobox.d.ts +26 -0
  32. package/dist/ui/components/nm-command/nm-command.d.ts +37 -0
  33. package/dist/ui/components/nm-composer/nm-composer.d.ts +33 -0
  34. package/dist/ui/components/nm-context-menu/nm-context-menu.d.ts +9 -0
  35. package/dist/ui/components/nm-date-picker/nm-date-picker.d.ts +35 -0
  36. package/dist/ui/components/nm-dialog/nm-dialog.d.ts +13 -0
  37. package/dist/ui/components/nm-dropdown/nm-dropdown-item.d.ts +26 -0
  38. package/dist/ui/components/nm-dropdown/nm-dropdown-options.d.ts +12 -0
  39. package/dist/ui/components/nm-dropdown/nm-dropdown-panel.d.ts +16 -0
  40. package/dist/ui/components/nm-dropdown/nm-dropdown-placement.d.ts +55 -0
  41. package/dist/ui/components/nm-dropdown/nm-dropdown.d.ts +31 -0
  42. package/dist/ui/components/nm-dropdown-menu/nm-dropdown-menu.d.ts +30 -0
  43. package/dist/ui/components/nm-field/nm-field.d.ts +52 -0
  44. package/dist/ui/components/nm-form-field/nm-form-field.d.ts +18 -0
  45. package/dist/ui/components/nm-gallery/nm-gallery.d.ts +8 -0
  46. package/dist/ui/components/nm-hover-card/nm-hover-card.d.ts +5 -0
  47. package/dist/ui/components/nm-icon/nm-icon.d.ts +7 -0
  48. package/dist/ui/components/nm-icon/nm-lucide.d.ts +7 -0
  49. package/dist/ui/components/nm-icon-border/nm-icon-border.d.ts +21 -0
  50. package/dist/ui/components/nm-input/nm-input.d.ts +5 -0
  51. package/dist/ui/components/nm-input-group/nm-input-group.d.ts +9 -0
  52. package/dist/ui/components/nm-label/nm-label.d.ts +2 -0
  53. package/dist/ui/components/nm-list-item/nm-list-item.d.ts +23 -0
  54. package/dist/ui/components/nm-menubar/nm-menubar.d.ts +9 -0
  55. package/dist/ui/components/nm-message/nm-message-actions.d.ts +7 -0
  56. package/dist/ui/components/nm-message/nm-message-meta.d.ts +10 -0
  57. package/dist/ui/components/nm-message/nm-text-shimmer.d.ts +4 -0
  58. package/dist/ui/components/nm-message/nm-trace.d.ts +58 -0
  59. package/dist/ui/components/nm-modal/nm-modal.d.ts +35 -0
  60. package/dist/ui/components/nm-native-select/nm-native-select.d.ts +5 -0
  61. package/dist/ui/components/nm-panel/nm-panel.d.ts +14 -0
  62. package/dist/ui/components/nm-panel-bar/nm-panel-bar.d.ts +17 -0
  63. package/dist/ui/components/nm-popover/nm-popover.d.ts +8 -0
  64. package/dist/ui/components/nm-progress/nm-progress.d.ts +3 -0
  65. package/dist/ui/components/nm-prose/nm-prose.d.ts +6 -0
  66. package/dist/ui/components/nm-questionnaire/nm-questionnaire.d.ts +17 -0
  67. package/dist/ui/components/nm-radio-group/nm-radio-group.d.ts +4 -0
  68. package/dist/ui/components/nm-rail-icon/nm-rail-icon.d.ts +6 -0
  69. package/dist/ui/components/nm-resize-handle/nm-resize-handle.d.ts +18 -0
  70. package/dist/ui/components/nm-segmented/nm-segmented.d.ts +20 -0
  71. package/dist/ui/components/nm-select/nm-select.d.ts +22 -0
  72. package/dist/ui/components/nm-separator/nm-separator.d.ts +2 -0
  73. package/dist/ui/components/nm-side-panel/nm-side-panel.d.ts +33 -0
  74. package/dist/ui/components/nm-slider/nm-slider.d.ts +6 -0
  75. package/dist/ui/components/nm-small-icon-button/nm-small-icon-button.d.ts +21 -0
  76. package/dist/ui/components/nm-status-bar/nm-status-bar.d.ts +8 -0
  77. package/dist/ui/components/nm-switch/nm-switch.d.ts +2 -0
  78. package/dist/ui/components/nm-table/nm-table.d.ts +38 -0
  79. package/dist/ui/components/nm-tabs/nm-tabs.d.ts +9 -0
  80. package/dist/ui/components/nm-textarea/nm-textarea.d.ts +2 -0
  81. package/dist/ui/components/nm-toggle/nm-toggle.d.ts +9 -0
  82. package/dist/ui/components/nm-toolbar/nm-toolbar.d.ts +21 -0
  83. package/dist/ui/components/nm-tooltip/nm-tooltip.d.ts +5 -0
  84. package/dist/ui/components/nm-top-bar/nm-top-bar.d.ts +12 -0
  85. package/dist/ui/components/nordman-icon-button/nordman-icon-button.d.ts +29 -0
  86. package/dist/ui/components/nordman-login/nordman-login.d.ts +36 -0
  87. package/dist/ui/components/nordman-login-field/nordman-login-field.d.ts +13 -0
  88. package/dist/ui/components/nordman-login-forgot/nordman-login-forgot.d.ts +9 -0
  89. package/dist/ui/components/nordman-login-google/nordman-login-google.d.ts +6 -0
  90. package/dist/ui/components/nordman-login-hero/nordman-login-hero.d.ts +6 -0
  91. package/dist/ui/components/nordman-login-register/nordman-login-register.d.ts +11 -0
  92. package/dist/ui/components/nordman-login-reset/nordman-login-reset.d.ts +9 -0
  93. package/dist/ui/components/nordman-login-reveal/nordman-login-reveal.d.ts +6 -0
  94. package/dist/ui/components/nordman-login-sign-in/nordman-login-sign-in.d.ts +11 -0
  95. package/dist/ui/components/nordman-toggle/nordman-toggle.d.ts +12 -0
  96. package/dist/ui/config/nm-ai.d.ts +44 -0
  97. package/dist/ui/config/nm-app-panel.d.ts +36 -0
  98. package/dist/ui/config/nm-appearance.d.ts +100 -0
  99. package/dist/ui/config/nm-bar-overflow.d.ts +9 -0
  100. package/dist/ui/config/nm-button.d.ts +31 -0
  101. package/dist/ui/config/nm-chatbox-icons.d.ts +42 -0
  102. package/dist/ui/config/nm-chatbox.d.ts +40 -0
  103. package/dist/ui/config/nm-collection.d.ts +88 -0
  104. package/dist/ui/config/nm-composer.d.ts +42 -0
  105. package/dist/ui/config/nm-dropdown.d.ts +56 -0
  106. package/dist/ui/config/nm-fade.d.ts +6 -0
  107. package/dist/ui/config/nm-field.d.ts +38 -0
  108. package/dist/ui/config/nm-header-icons.d.ts +15 -0
  109. package/dist/ui/config/nm-icon-border.d.ts +3 -0
  110. package/dist/ui/config/nm-icon-button.d.ts +26 -0
  111. package/dist/ui/config/nm-icons.d.ts +371 -0
  112. package/dist/ui/config/nm-list-item.d.ts +14 -0
  113. package/dist/ui/config/nm-message.d.ts +87 -0
  114. package/dist/ui/config/nm-modal.d.ts +67 -0
  115. package/dist/ui/config/nm-panel-bar.d.ts +9 -0
  116. package/dist/ui/config/nm-questionnaire.d.ts +57 -0
  117. package/dist/ui/config/nm-radius.d.ts +49 -0
  118. package/dist/ui/config/nm-rail-icons.d.ts +14 -0
  119. package/dist/ui/config/nm-rail.d.ts +5 -0
  120. package/dist/ui/config/nm-segmented.d.ts +17 -0
  121. package/dist/ui/config/nm-side-panel.d.ts +33 -0
  122. package/dist/ui/config/nm-site-palette.d.ts +30 -0
  123. package/dist/ui/config/nm-small-icon-button.d.ts +12 -0
  124. package/dist/ui/config/nm-tabs.d.ts +8 -0
  125. package/dist/ui/config/nm-top-bar.d.ts +4 -0
  126. package/dist/ui/config/nordman-chrome.d.ts +12 -0
  127. package/dist/ui/config/nordman-login.d.ts +23 -0
  128. package/dist/ui/content/nm-modal.d.ts +1 -0
  129. package/dist/ui/content/nordman-login.d.ts +38 -0
  130. package/dist/ui/kit-logger.d.ts +1 -0
  131. package/dist/ui/lib/appearance/appearanceState.d.ts +28 -0
  132. package/dist/ui/lib/appearance/applyAppearance.d.ts +5 -0
  133. package/dist/ui/lib/appearance/cloudOrbAppearance.d.ts +4 -0
  134. package/dist/ui/lib/appearance/color.d.ts +13 -0
  135. package/dist/ui/lib/appearance/deriveTokens.d.ts +6 -0
  136. package/dist/ui/lib/appearance/index.d.ts +6 -0
  137. package/dist/ui/lib/appearance/markTokens.d.ts +2 -0
  138. package/dist/ui/lib/appearance/readLayoutMetrics.d.ts +4 -0
  139. package/dist/ui/lib/bar-overflow.d.ts +13 -0
  140. package/dist/ui/lib/logger.d.ts +8 -0
  141. package/dist/ui/lib/menu-motion.d.ts +72 -0
  142. package/dist/ui/lib/nm-class.d.ts +2 -0
  143. package/dist/ui/lib/nordman-ui-locale.d.ts +9 -0
  144. package/interface/app-panel/code.svg +5 -0
  145. package/interface/app-panel/console.svg +5 -0
  146. package/interface/app-panel/copy.svg +5 -0
  147. package/interface/app-panel/ellipsis.svg +7 -0
  148. package/interface/app-panel/message.svg +5 -0
  149. package/interface/app-panel/network.svg +10 -0
  150. package/interface/app-panel/play.svg +5 -0
  151. package/interface/app-panel/plus.svg +5 -0
  152. package/interface/chatbox/app.svg +5 -0
  153. package/interface/chatbox/audio-lines.svg +5 -0
  154. package/interface/chatbox/check.svg +5 -0
  155. package/interface/chatbox/globe.svg +5 -0
  156. package/interface/chatbox/integration.svg +5 -0
  157. package/interface/chatbox/mic.svg +5 -0
  158. package/interface/chatbox/paperclip.svg +5 -0
  159. package/interface/chatbox/pointer.svg +5 -0
  160. package/interface/chatbox/send.svg +5 -0
  161. package/interface/chatbox/settings.svg +5 -0
  162. package/interface/chatbox/spreadsheet.svg +5 -0
  163. package/interface/chatbox/x.svg +5 -0
  164. package/interface/collection/audio.svg +5 -0
  165. package/interface/collection/download.svg +5 -0
  166. package/interface/collection/expand.svg +5 -0
  167. package/interface/collection/grid.svg +10 -0
  168. package/interface/collection/image.svg +5 -0
  169. package/interface/collection/spreadsheet.svg +5 -0
  170. package/interface/collection/video.svg +5 -0
  171. package/interface/header/app.svg +5 -0
  172. package/interface/header/bot.svg +5 -0
  173. package/interface/header/chat.svg +10 -0
  174. package/interface/header/folder.svg +5 -0
  175. package/interface/header/layers.svg +10 -0
  176. package/interface/header/panel.svg +5 -0
  177. package/interface/header/play.svg +3 -0
  178. package/interface/header/schedule.svg +8 -0
  179. package/interface/header/search.svg +5 -0
  180. package/interface/header/settings.svg +5 -0
  181. package/interface/header/users.svg +5 -0
  182. package/interface/message/chevron.svg +5 -0
  183. package/interface/message/copy.svg +5 -0
  184. package/interface/message/fork.svg +5 -0
  185. package/interface/message/refresh.svg +5 -0
  186. package/interface/message/volume.svg +5 -0
  187. package/interface/rail/app.svg +5 -0
  188. package/interface/rail/bot.svg +5 -0
  189. package/interface/rail/chats.svg +5 -0
  190. package/interface/rail/folder.svg +5 -0
  191. package/interface/rail/library.svg +5 -0
  192. package/interface/rail/plus-sm.svg +5 -0
  193. package/interface/rail/plus.svg +5 -0
  194. package/interface/rail/search.svg +5 -0
  195. package/interface/rail/settings.svg +8 -0
  196. package/interface/rail/spreadsheet.svg +5 -0
  197. package/package.json +79 -4
  198. package/registry/index.json +1634 -0
  199. package/registry/tokens.css +72 -0
  200. package/registry/ui/components/nm-ai/nm-ai.css +358 -0
  201. package/registry/ui/components/nm-ai/nm-ai.tsx +632 -0
  202. package/registry/ui/components/nm-app-panel/nm-app-panel.css +169 -0
  203. package/registry/ui/components/nm-ask/nm-ask.css +277 -0
  204. package/registry/ui/components/nm-avatar/nm-avatar.css +85 -0
  205. package/registry/ui/components/nm-avatar/nm-avatar.tsx +30 -0
  206. package/registry/ui/components/nm-bar-overflow/nm-bar-overflow.css +43 -0
  207. package/registry/ui/components/nm-bar-overflow/nm-bar-overflow.tsx +61 -0
  208. package/registry/ui/components/nm-bar-overflow/use-bar-overflow.ts +92 -0
  209. package/registry/ui/components/nm-brand-logo/nm-brand-logo.css +20 -0
  210. package/registry/ui/components/nm-brand-logo/nm-brand-logo.tsx +21 -0
  211. package/registry/ui/components/nm-breadcrumb/nm-breadcrumb.css +57 -0
  212. package/registry/ui/components/nm-breadcrumb/nm-breadcrumb.tsx +42 -0
  213. package/registry/ui/components/nm-button/nm-button.css +110 -0
  214. package/registry/ui/components/nm-button/nm-button.tsx +58 -0
  215. package/registry/ui/components/nm-button-group/nm-button-group.css +87 -0
  216. package/registry/ui/components/nm-button-group/nm-button-group.tsx +32 -0
  217. package/registry/ui/components/nm-calendar/nm-calendar.css +178 -0
  218. package/registry/ui/components/nm-calendar/nm-calendar.tsx +43 -0
  219. package/registry/ui/components/nm-card/nm-card.css +130 -0
  220. package/registry/ui/components/nm-card/nm-card.tsx +83 -0
  221. package/registry/ui/components/nm-chatbox/nm-chatbox-icon.tsx +39 -0
  222. package/registry/ui/components/nm-chatbox/nm-chatbox.css +682 -0
  223. package/registry/ui/components/nm-chatbox/nm-chatbox.tsx +101 -0
  224. package/registry/ui/components/nm-checkbox/nm-checkbox.css +61 -0
  225. package/registry/ui/components/nm-checkbox/nm-checkbox.tsx +14 -0
  226. package/registry/ui/components/nm-chip/nm-chip.css +112 -0
  227. package/registry/ui/components/nm-chip/nm-chip.tsx +86 -0
  228. package/registry/ui/components/nm-code-block/nm-code-block.css +240 -0
  229. package/registry/ui/components/nm-code-block/nm-code-block.tsx +196 -0
  230. package/registry/ui/components/nm-collection/nm-collection-bar.tsx +65 -0
  231. package/registry/ui/components/nm-collection/nm-collection-grid.tsx +69 -0
  232. package/registry/ui/components/nm-collection/nm-collection-query.tsx +99 -0
  233. package/registry/ui/components/nm-collection/nm-collection-row-menu.tsx +55 -0
  234. package/registry/ui/components/nm-collection/nm-collection-table.tsx +99 -0
  235. package/registry/ui/components/nm-collection/nm-collection-tile-actions.tsx +50 -0
  236. package/registry/ui/components/nm-collection/nm-collection-title.tsx +25 -0
  237. package/registry/ui/components/nm-collection/nm-collection.css +353 -0
  238. package/registry/ui/components/nm-collection/use-collection-scroll-reveal.ts +38 -0
  239. package/registry/ui/components/nm-color-picker/nm-color-picker.css +67 -0
  240. package/registry/ui/components/nm-color-picker/nm-color-picker.tsx +79 -0
  241. package/registry/ui/components/nm-combobox/nm-combobox.css +72 -0
  242. package/registry/ui/components/nm-combobox/nm-combobox.tsx +80 -0
  243. package/registry/ui/components/nm-command/nm-command.css +190 -0
  244. package/registry/ui/components/nm-command/nm-command.tsx +125 -0
  245. package/registry/ui/components/nm-composer/nm-composer.css +178 -0
  246. package/registry/ui/components/nm-composer/nm-composer.tsx +151 -0
  247. package/registry/ui/components/nm-context-menu/nm-context-menu.tsx +25 -0
  248. package/registry/ui/components/nm-date-picker/nm-date-picker.css +140 -0
  249. package/registry/ui/components/nm-date-picker/nm-date-picker.tsx +153 -0
  250. package/registry/ui/components/nm-dialog/nm-dialog.css +84 -0
  251. package/registry/ui/components/nm-dialog/nm-dialog.tsx +40 -0
  252. package/registry/ui/components/nm-dropdown/nm-dropdown-item.ts +68 -0
  253. package/registry/ui/components/nm-dropdown/nm-dropdown-options.tsx +242 -0
  254. package/registry/ui/components/nm-dropdown/nm-dropdown-panel.tsx +171 -0
  255. package/registry/ui/components/nm-dropdown/nm-dropdown-placement.ts +157 -0
  256. package/registry/ui/components/nm-dropdown/nm-dropdown.css +312 -0
  257. package/registry/ui/components/nm-dropdown/nm-dropdown.tsx +412 -0
  258. package/registry/ui/components/nm-dropdown-menu/nm-dropdown-menu.css +145 -0
  259. package/registry/ui/components/nm-dropdown-menu/nm-dropdown-menu.tsx +118 -0
  260. package/registry/ui/components/nm-field/nm-field.css +356 -0
  261. package/registry/ui/components/nm-field/nm-field.tsx +355 -0
  262. package/registry/ui/components/nm-form-field/nm-form-field.css +103 -0
  263. package/registry/ui/components/nm-form-field/nm-form-field.tsx +71 -0
  264. package/registry/ui/components/nm-gallery/nm-gallery.css +66 -0
  265. package/registry/ui/components/nm-gallery/nm-gallery.tsx +31 -0
  266. package/registry/ui/components/nm-hover-card/nm-hover-card.css +26 -0
  267. package/registry/ui/components/nm-hover-card/nm-hover-card.tsx +28 -0
  268. package/registry/ui/components/nm-icon/nm-icon.css +6 -0
  269. package/registry/ui/components/nm-icon/nm-icon.tsx +69 -0
  270. package/registry/ui/components/nm-icon/nm-lucide.tsx +180 -0
  271. package/registry/ui/components/nm-icon-border/nm-icon-border.tsx +56 -0
  272. package/registry/ui/components/nm-input/nm-input.css +75 -0
  273. package/registry/ui/components/nm-input/nm-input.tsx +7 -0
  274. package/registry/ui/components/nm-input-group/nm-input-group.css +66 -0
  275. package/registry/ui/components/nm-input-group/nm-input-group.tsx +20 -0
  276. package/registry/ui/components/nm-label/nm-label.css +11 -0
  277. package/registry/ui/components/nm-label/nm-label.tsx +6 -0
  278. package/registry/ui/components/nm-list-item/nm-list-item.css +177 -0
  279. package/registry/ui/components/nm-list-item/nm-list-item.tsx +112 -0
  280. package/registry/ui/components/nm-menubar/nm-menubar.css +32 -0
  281. package/registry/ui/components/nm-menubar/nm-menubar.tsx +19 -0
  282. package/registry/ui/components/nm-message/nm-message-actions.tsx +24 -0
  283. package/registry/ui/components/nm-message/nm-message-meta.tsx +49 -0
  284. package/registry/ui/components/nm-message/nm-message.css +686 -0
  285. package/registry/ui/components/nm-message/nm-text-shimmer.tsx +6 -0
  286. package/registry/ui/components/nm-message/nm-trace.tsx +219 -0
  287. package/registry/ui/components/nm-modal/nm-modal.css +763 -0
  288. package/registry/ui/components/nm-modal/nm-modal.tsx +497 -0
  289. package/registry/ui/components/nm-native-select/nm-native-select.css +47 -0
  290. package/registry/ui/components/nm-native-select/nm-native-select.tsx +23 -0
  291. package/registry/ui/components/nm-panel/nm-panel.css +73 -0
  292. package/registry/ui/components/nm-panel/nm-panel.tsx +35 -0
  293. package/registry/ui/components/nm-panel-bar/nm-panel-bar.css +20 -0
  294. package/registry/ui/components/nm-panel-bar/nm-panel-bar.tsx +48 -0
  295. package/registry/ui/components/nm-popover/nm-popover.css +43 -0
  296. package/registry/ui/components/nm-popover/nm-popover.tsx +40 -0
  297. package/registry/ui/components/nm-progress/nm-progress.css +21 -0
  298. package/registry/ui/components/nm-progress/nm-progress.tsx +14 -0
  299. package/registry/ui/components/nm-prose/nm-prose.css +81 -0
  300. package/registry/ui/components/nm-prose/nm-prose.tsx +10 -0
  301. package/registry/ui/components/nm-questionnaire/nm-questionnaire.css +182 -0
  302. package/registry/ui/components/nm-questionnaire/nm-questionnaire.tsx +221 -0
  303. package/registry/ui/components/nm-radio-group/nm-radio-group.css +48 -0
  304. package/registry/ui/components/nm-radio-group/nm-radio-group.tsx +15 -0
  305. package/registry/ui/components/nm-rail-icon/nm-rail-icon.css +6 -0
  306. package/registry/ui/components/nm-rail-icon/nm-rail-icon.tsx +28 -0
  307. package/registry/ui/components/nm-resize-handle/nm-resize-handle.css +45 -0
  308. package/registry/ui/components/nm-resize-handle/nm-resize-handle.tsx +102 -0
  309. package/registry/ui/components/nm-segmented/nm-segmented.css +104 -0
  310. package/registry/ui/components/nm-segmented/nm-segmented.tsx +77 -0
  311. package/registry/ui/components/nm-select/nm-select.css +78 -0
  312. package/registry/ui/components/nm-select/nm-select.tsx +64 -0
  313. package/registry/ui/components/nm-separator/nm-separator.css +14 -0
  314. package/registry/ui/components/nm-separator/nm-separator.tsx +6 -0
  315. package/registry/ui/components/nm-side-panel/nm-side-panel.css +93 -0
  316. package/registry/ui/components/nm-side-panel/nm-side-panel.tsx +86 -0
  317. package/registry/ui/components/nm-slider/nm-slider.css +53 -0
  318. package/registry/ui/components/nm-slider/nm-slider.tsx +40 -0
  319. package/registry/ui/components/nm-small-icon-button/nm-small-icon-button.tsx +66 -0
  320. package/registry/ui/components/nm-status-bar/nm-status-bar.css +50 -0
  321. package/registry/ui/components/nm-status-bar/nm-status-bar.tsx +28 -0
  322. package/registry/ui/components/nm-switch/nm-switch.css +45 -0
  323. package/registry/ui/components/nm-switch/nm-switch.tsx +10 -0
  324. package/registry/ui/components/nm-table/nm-table.css +155 -0
  325. package/registry/ui/components/nm-table/nm-table.tsx +95 -0
  326. package/registry/ui/components/nm-tabs/nm-tabs.css +28 -0
  327. package/registry/ui/components/nm-tabs/nm-tabs.tsx +32 -0
  328. package/registry/ui/components/nm-textarea/nm-textarea.css +41 -0
  329. package/registry/ui/components/nm-textarea/nm-textarea.tsx +6 -0
  330. package/registry/ui/components/nm-toggle/nm-toggle.css +55 -0
  331. package/registry/ui/components/nm-toggle/nm-toggle.tsx +16 -0
  332. package/registry/ui/components/nm-toolbar/nm-toolbar.css +42 -0
  333. package/registry/ui/components/nm-toolbar/nm-toolbar.tsx +54 -0
  334. package/registry/ui/components/nm-tooltip/nm-tooltip.css +37 -0
  335. package/registry/ui/components/nm-tooltip/nm-tooltip.tsx +35 -0
  336. package/registry/ui/components/nm-top-bar/nm-top-bar.css +29 -0
  337. package/registry/ui/components/nm-top-bar/nm-top-bar.tsx +34 -0
  338. package/registry/ui/components/nordman-icon-button/nordman-icon-button.css +119 -0
  339. package/registry/ui/components/nordman-icon-button/nordman-icon-button.tsx +185 -0
  340. package/registry/ui/components/nordman-login/nordman-login.css +195 -0
  341. package/registry/ui/components/nordman-login/nordman-login.tsx +136 -0
  342. package/registry/ui/components/nordman-login-field/nordman-login-field.tsx +55 -0
  343. package/registry/ui/components/nordman-login-forgot/nordman-login-forgot.tsx +56 -0
  344. package/registry/ui/components/nordman-login-google/nordman-login-google.tsx +28 -0
  345. package/registry/ui/components/nordman-login-hero/nordman-login-hero.tsx +38 -0
  346. package/registry/ui/components/nordman-login-register/nordman-login-register.tsx +70 -0
  347. package/registry/ui/components/nordman-login-reset/nordman-login-reset.tsx +71 -0
  348. package/registry/ui/components/nordman-login-reveal/nordman-login-reveal.tsx +41 -0
  349. package/registry/ui/components/nordman-login-sign-in/nordman-login-sign-in.tsx +69 -0
  350. package/registry/ui/components/nordman-toggle/nordman-toggle.css +28 -0
  351. package/registry/ui/components/nordman-toggle/nordman-toggle.tsx +35 -0
  352. package/registry/ui/config/nm-ai.ts +59 -0
  353. package/registry/ui/config/nm-appearance.ts +275 -0
  354. package/registry/ui/config/nm-bar-overflow.ts +10 -0
  355. package/registry/ui/config/nm-button.ts +38 -0
  356. package/registry/ui/config/nm-chatbox-icons.ts +67 -0
  357. package/registry/ui/config/nm-chatbox.ts +42 -0
  358. package/registry/ui/config/nm-collection.ts +101 -0
  359. package/registry/ui/config/nm-composer.ts +39 -0
  360. package/registry/ui/config/nm-dropdown.ts +62 -0
  361. package/registry/ui/config/nm-field.ts +43 -0
  362. package/registry/ui/config/nm-icon-button.ts +35 -0
  363. package/registry/ui/config/nm-icons.ts +417 -0
  364. package/registry/ui/config/nm-list-item.ts +14 -0
  365. package/registry/ui/config/nm-message.ts +106 -0
  366. package/registry/ui/config/nm-modal.ts +76 -0
  367. package/registry/ui/config/nm-panel-bar.ts +11 -0
  368. package/registry/ui/config/nm-questionnaire.ts +53 -0
  369. package/registry/ui/config/nm-radius.ts +56 -0
  370. package/registry/ui/config/nm-rail-icons.ts +27 -0
  371. package/registry/ui/config/nm-segmented.ts +19 -0
  372. package/registry/ui/config/nm-side-panel.ts +16 -0
  373. package/registry/ui/config/nm-site-palette.ts +30 -0
  374. package/registry/ui/config/nm-small-icon-button.ts +17 -0
  375. package/registry/ui/config/nm-tabs.ts +9 -0
  376. package/registry/ui/config/nm-top-bar.ts +4 -0
  377. package/registry/ui/config/nordman-chrome.ts +14 -0
  378. package/registry/ui/config/nordman-login.ts +28 -0
  379. package/registry/ui/content/nm-modal.ts +5 -0
  380. package/registry/ui/content/nordman-login.ts +85 -0
  381. package/registry/ui/kit-logger.ts +1 -0
  382. package/registry/ui/lib/appearance/appearanceState.ts +240 -0
  383. package/registry/ui/lib/appearance/applyAppearance.ts +36 -0
  384. package/registry/ui/lib/appearance/cloudOrbAppearance.ts +36 -0
  385. package/registry/ui/lib/appearance/color.ts +96 -0
  386. package/registry/ui/lib/appearance/deriveTokens.ts +218 -0
  387. package/registry/ui/lib/appearance/index.ts +6 -0
  388. package/registry/ui/lib/appearance/markTokens.ts +49 -0
  389. package/registry/ui/lib/appearance/readLayoutMetrics.ts +28 -0
  390. package/registry/ui/lib/bar-overflow.ts +41 -0
  391. package/registry/ui/lib/logger.ts +53 -0
  392. package/registry/ui/lib/menu-motion.ts +187 -0
  393. package/registry/ui/lib/nm-class.ts +4 -0
  394. package/registry/ui/lib/nordman-ui-locale.ts +43 -0
  395. package/registry/ui/styles/interface-theme.css +196 -0
  396. package/registry/ui/styles/light-appearance.css +72 -0
  397. package/registry/ui/styles/tokens.css +424 -0
  398. package/registry/ui/styles/utilities.css +12 -0
@@ -0,0 +1,14 @@
1
+ export declare const NM_RAIL_ICON_IDS: readonly ['plus', 'folder', 'chats', 'bot', 'app', 'spreadsheet', 'library', 'settings', 'search', 'plusSm'];
2
+ export type NmRailIconId = (typeof NM_RAIL_ICON_IDS)[number];
3
+ export declare const NM_RAIL_ICON_SRC: {
4
+ readonly plus: '/interface/rail/plus.svg';
5
+ readonly folder: '/interface/rail/folder.svg';
6
+ readonly chats: '/interface/rail/chats.svg';
7
+ readonly bot: '/interface/rail/bot.svg';
8
+ readonly app: '/interface/rail/app.svg';
9
+ readonly spreadsheet: '/interface/rail/spreadsheet.svg';
10
+ readonly library: '/interface/rail/library.svg';
11
+ readonly settings: '/interface/rail/settings.svg';
12
+ readonly search: '/interface/rail/search.svg';
13
+ readonly plusSm: '/interface/rail/plus-sm.svg';
14
+ };
@@ -0,0 +1,5 @@
1
+ /** Must match `--nm-rail-scroll-idle` (`--reveal` × 3). */
2
+ export declare const NM_RAIL_SCROLL_IDLE_MS = 750;
3
+ /** Must match `--nm-rail-face-hold`. One agent stays on the rail this long. */
4
+ export declare const NM_RAIL_FACE_HOLD_MS = 7000;
5
+ export declare const NM_RAIL_SEARCH_DEBOUNCE_MS = 500;
@@ -0,0 +1,17 @@
1
+ export declare const NM_SEGMENTED_TONES: {
2
+ readonly fill: 'fill';
3
+ readonly line: 'line';
4
+ readonly pills: 'pills';
5
+ readonly track: 'track';
6
+ };
7
+ export type NmSegmentedTone = (typeof NM_SEGMENTED_TONES)[keyof typeof NM_SEGMENTED_TONES];
8
+ export declare const NM_SEGMENTED_CLASSES: {
9
+ readonly root: 'nm-segmented';
10
+ readonly fill: 'nm-segmented--fill';
11
+ readonly line: 'nm-segmented--line';
12
+ readonly pills: 'nm-segmented--pills';
13
+ readonly track: 'nm-segmented--track';
14
+ readonly item: 'nm-segmented__item';
15
+ readonly itemIcon: 'nm-segmented__item--icon';
16
+ readonly icon: 'nm-segmented__icon';
17
+ };
@@ -0,0 +1,33 @@
1
+ /** What the side panel can show. Each kind has an icon, so a toolbar can open it. */
2
+ export declare const NM_SIDE_PANEL_KINDS: readonly [{
3
+ readonly id: 'app';
4
+ readonly label: 'App';
5
+ readonly icon: 'app';
6
+ }, {
7
+ readonly id: 'code';
8
+ readonly label: 'Code';
9
+ readonly icon: 'code';
10
+ }, {
11
+ readonly id: 'files';
12
+ readonly label: 'Files';
13
+ readonly icon: 'folder';
14
+ }, {
15
+ readonly id: 'artifact';
16
+ readonly label: 'Artifact';
17
+ readonly icon: 'layers';
18
+ }, {
19
+ readonly id: 'media';
20
+ readonly label: 'Media';
21
+ readonly icon: 'image';
22
+ }, {
23
+ readonly id: 'docs';
24
+ readonly label: 'Docs';
25
+ readonly icon: 'file-text';
26
+ }, {
27
+ readonly id: 'markdown';
28
+ readonly label: 'Markdown';
29
+ readonly icon: 'file-code';
30
+ }];
31
+ export type NmSidePanelKind = (typeof NM_SIDE_PANEL_KINDS)[number]['id'];
32
+ export declare const NM_SIDE_PANEL_SIZES: readonly ['narrow', 'default', 'wide'];
33
+ export type NmSidePanelSize = (typeof NM_SIDE_PANEL_SIZES)[number];
@@ -0,0 +1,30 @@
1
+ /**
2
+ * The website palette in `assets/tokens.css`, for code that writes colours inline or into iframes
3
+ * and cannot read a stylesheet. `nm-site-palette.spec.ts` fails if the two differ.
4
+ */
5
+ export declare const NM_SITE_PALETTE: {
6
+ readonly dark: {
7
+ readonly canvas: '#000000';
8
+ readonly fg: '#ededed';
9
+ readonly muted: '#a1a1a1';
10
+ readonly subtle: '#a1a1a1';
11
+ readonly stroke: '#707070';
12
+ readonly line: '#1f1f1f';
13
+ readonly lineStrong: '#2e2e2e';
14
+ readonly panel: '#1a1a1a';
15
+ readonly raised: '#0a0a0a';
16
+ readonly inset: '#1a1a1a';
17
+ };
18
+ readonly light: {
19
+ readonly canvas: '#ffffff';
20
+ readonly fg: '#171717';
21
+ readonly muted: '#666666';
22
+ readonly subtle: '#666666';
23
+ readonly stroke: '#666666';
24
+ readonly line: '#ebebeb';
25
+ readonly lineStrong: '#e0e0e0';
26
+ readonly panel: '#f2f2f2';
27
+ readonly raised: '#fafafa';
28
+ readonly inset: '#f2f2f2';
29
+ };
30
+ };
@@ -0,0 +1,12 @@
1
+ export declare const NM_SMALL_ICON_BUTTON_TONES: {
2
+ readonly solid: 'solid';
3
+ readonly quiet: 'quiet';
4
+ };
5
+ export type NmSmallIconButtonTone = (typeof NM_SMALL_ICON_BUTTON_TONES)[keyof typeof NM_SMALL_ICON_BUTTON_TONES];
6
+ /** Class names of the shared icon button. Quiet and solid are tones of that button. */
7
+ export declare const NM_SMALL_ICON_BUTTON_CLASSES: {
8
+ readonly root: "nm-icon-button";
9
+ readonly solid: "nm-icon-button--solid";
10
+ readonly quiet: "nm-icon-button--quiet";
11
+ readonly active: "nm-icon-button--active";
12
+ };
@@ -0,0 +1,8 @@
1
+ export declare const NM_TABS_CLASSES: {
2
+ readonly root: 'nm-tabs';
3
+ readonly item: 'nm-tabs__item';
4
+ };
5
+ export type NmTabItem = {
6
+ id: string;
7
+ label: string;
8
+ };
@@ -0,0 +1,4 @@
1
+ export declare const NM_TOP_BAR_CLASSES: {
2
+ readonly root: 'nm-header';
3
+ readonly end: 'nm-header__end';
4
+ };
@@ -0,0 +1,12 @@
1
+ export declare const NORDMAN_CHROME_ICON_IDS: readonly ['plus', 'user'];
2
+ export type NordmanChromeIconId = (typeof NORDMAN_CHROME_ICON_IDS)[number];
3
+ export declare const NORDMAN_CHROME_ICONS: {
4
+ readonly plus: {
5
+ readonly viewBox: '0 0 20 20';
6
+ readonly path: 'M4.16667 10H15.8333M10 4.16667V15.8333';
7
+ };
8
+ readonly user: {
9
+ readonly viewBox: '0 0 20 20';
10
+ readonly path: 'M15.8333 17.5V15.8333C15.8333 14.9493 15.4821 14.1014 14.857 13.4763C14.2319 12.8512 13.3841 12.5 12.5 12.5H7.5C6.61594 12.5 5.7681 12.8512 5.14298 13.4763C4.51786 14.1014 4.16667 14.9493 4.16667 15.8333V17.5M13.3333 5.83333C13.3333 7.67428 11.8409 9.16667 10 9.16667C8.15905 9.16667 6.66667 7.67428 6.66667 5.83333C6.66667 3.99238 8.15905 2.5 10 2.5C11.8409 2.5 13.3333 3.99238 13.3333 5.83333Z';
11
+ };
12
+ };
@@ -0,0 +1,23 @@
1
+ export declare const NORDMAN_LOGIN_VIEWS: {
2
+ readonly signIn: 'signIn';
3
+ readonly register: 'register';
4
+ readonly forgot: 'forgot';
5
+ readonly reset: 'reset';
6
+ };
7
+ export type NordmanLoginView = (typeof NORDMAN_LOGIN_VIEWS)[keyof typeof NORDMAN_LOGIN_VIEWS];
8
+ export declare const NORDMAN_LOGIN_FORM_ID = "nm-login-form";
9
+ export declare const NORDMAN_LOGIN_FIELDS: {
10
+ readonly username: 'username';
11
+ readonly password: 'password';
12
+ readonly displayName: 'displayName';
13
+ readonly registerUsername: 'register-username';
14
+ readonly registerPassword: 'register-password';
15
+ readonly confirmPassword: 'confirm-password';
16
+ readonly resetPassword: 'reset-password';
17
+ };
18
+ export declare const NORDMAN_LOGIN_REVEAL: {
19
+ readonly viewBox: '0 0 24 24';
20
+ readonly show: 'M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z';
21
+ readonly hide: 'M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z';
22
+ };
23
+ export declare const NORDMAN_LOGIN_INTERFACE = "nordman";
@@ -0,0 +1 @@
1
+ export declare function nmModalSavedLabel(): string;
@@ -0,0 +1,38 @@
1
+ declare const nordmanLoginCopySv: {
2
+ readonly skip: 'Hoppa till innehållet';
3
+ readonly identifier: 'Email';
4
+ readonly identifierPlaceholder: 'name@mail.com';
5
+ readonly password: 'Lösenord';
6
+ readonly passwordPlaceholder: '••••';
7
+ readonly confirmPassword: 'Bekräfta lösenord';
8
+ readonly forgot: 'Glömt lösenord?';
9
+ readonly forgotSubmit: 'Skicka länk';
10
+ readonly forgotPending: 'Skickar…';
11
+ readonly forgotSent: 'Om kontot finns skickar vi en länk för att välja ett nytt lösenord.';
12
+ readonly showPassword: 'Visa lösenord';
13
+ readonly hidePassword: 'Dölj lösenord';
14
+ readonly submit: 'Logga in';
15
+ readonly pending: 'Loggar in…';
16
+ readonly continueWithGoogle: 'Fortsätt med Google';
17
+ readonly googlePending: 'Öppnar Google…';
18
+ readonly registerPrompt: 'Inget konto?';
19
+ readonly registerAction: 'Skapa konto';
20
+ readonly signInPrompt: 'Har du redan konto?';
21
+ readonly signInAction: 'Logga in';
22
+ readonly displayName: 'Visningsnamn';
23
+ readonly registerSubmit: 'Skapa konto';
24
+ readonly registerPending: 'Skapar konto…';
25
+ readonly resetSubmit: 'Spara nytt lösenord';
26
+ readonly resetPending: 'Sparar…';
27
+ readonly resetDone: 'Lösenordet är uppdaterat. Logga in.';
28
+ readonly mismatch: 'Lösenorden matchar inte.';
29
+ readonly mail: 'Kunde inte skicka mejlet just nu.';
30
+ readonly resetInvalid: 'Länken är ogiltig eller har gått ut.';
31
+ readonly registerEmailInUse: 'Det finns redan ett konto med den här e-postadressen.';
32
+ readonly registerDone: 'Kolla mejlet för att bekräfta kontot.';
33
+ readonly registerDoneReady: 'Kontot är skapat. Logga in.';
34
+ };
35
+ export type NordmanLoginCopy = Record<keyof typeof nordmanLoginCopySv, string>;
36
+ export declare function getNordmanLoginCopy(locale?: string | null): NordmanLoginCopy;
37
+ export declare const nordmanLoginCopy: NordmanLoginCopy;
38
+ export {};
@@ -0,0 +1 @@
1
+ export { createLogger } from './lib/logger.ts';
@@ -0,0 +1,28 @@
1
+ import { NM_APPEARANCE_STORAGE_KEY, type NmAccentPreset, type NmAppearanceMode } from '../../config/nm-appearance.ts';
2
+ export type NmAppearanceState = {
3
+ mode: NmAppearanceMode;
4
+ themePresetId: string;
5
+ accentPreset: NmAccentPreset;
6
+ customAccentHex: string;
7
+ backgroundHex: string;
8
+ foregroundHex: string;
9
+ uiFontSizePx: number;
10
+ uiFontWeight: number;
11
+ uiIconSizePx: number;
12
+ uiRadiusPercent: number;
13
+ uiSpacePercent: number;
14
+ contrast: number;
15
+ };
16
+ export { NM_APPEARANCE_STORAGE_KEY };
17
+ export declare function resolveAppearanceScheme(mode: NmAppearanceMode, prefersDark?: boolean): 'light' | 'dark';
18
+ export declare function createDefaultAppearanceState(): NmAppearanceState;
19
+ export declare function paletteForPreset(themePresetId: string, scheme: 'light' | 'dark'): {
20
+ backgroundHex: string;
21
+ foregroundHex: string;
22
+ };
23
+ export declare function parseAppearanceState(raw: unknown): NmAppearanceState;
24
+ export declare function readStoredAppearanceState(): NmAppearanceState | null;
25
+ export declare function writeStoredAppearanceState(state: NmAppearanceState): void;
26
+ export declare function mergeThemePresetColors(state: NmAppearanceState, scheme: 'light' | 'dark'): NmAppearanceState;
27
+ /** Sync background and foreground (and default accent) from the active theme preset + mode. */
28
+ export declare function applyThemePresetPalette(state: NmAppearanceState, prefersDark?: boolean): NmAppearanceState;
@@ -0,0 +1,5 @@
1
+ import type { NmAppearanceState } from './appearanceState.ts';
2
+ export declare function clearAppliedAppearance(root?: HTMLElement): void;
3
+ export declare function applyAppearanceState(state: NmAppearanceState, root?: HTMLElement): {
4
+ scheme: 'light' | 'dark';
5
+ };
@@ -0,0 +1,4 @@
1
+ import type { CloudAppearance } from 'orb-ui';
2
+ export declare function deriveCloudOrbAppearance(accent: string, canvas: string, fg: string): CloudAppearance;
3
+ export declare function cloudOrbAppearanceCssVars(appearance: CloudAppearance): Record<string, string>;
4
+ export declare function deriveCloudOrbAppearanceTokens(accent: string, canvas: string, fg: string): Record<string, string>;
@@ -0,0 +1,13 @@
1
+ export declare function isHexColor(value: string): boolean;
2
+ export declare function normalizeHexColor(value: string, fallback: string): string;
3
+ export declare function hexToRgbTriplet(hex: string): string;
4
+ /** Mix hex `color` toward `target` by amount in [0, 1]. */
5
+ export declare function mixHex(color: string, target: string, amount: number): string;
6
+ /** WCAG contrast ratio between two colours, from 1 to 21. */
7
+ export declare function contrastRatio(first: string, second: string): number;
8
+ export declare function hexToHsl(hex: string): {
9
+ hue: number;
10
+ saturation: number;
11
+ lightness: number;
12
+ };
13
+ export declare function hslToHex(hue: number, saturation: number, lightness: number): string;
@@ -0,0 +1,6 @@
1
+ import type { NmAppearanceState } from './appearanceState.ts';
2
+ export type NmDerivedAppearanceTokens = Record<string, string>;
3
+ /** The accent colour that is in effect for these settings. */
4
+ export declare function resolveAccentHex(state: NmAppearanceState): string;
5
+ export declare function deriveAppearanceTokens(state: NmAppearanceState, scheme: 'light' | 'dark'): NmDerivedAppearanceTokens;
6
+ export declare function themeModeFromAppearance(mode: NmAppearanceState['mode']): string;
@@ -0,0 +1,6 @@
1
+ export * from '../../config/nm-appearance.ts';
2
+ export * from './appearanceState.ts';
3
+ export * from './applyAppearance.ts';
4
+ export * from './color.ts';
5
+ export * from './deriveTokens.ts';
6
+ export * from './readLayoutMetrics.ts';
@@ -0,0 +1,2 @@
1
+ /** Three text highlights from the accent's hue and its two even neighbours, readable on the theme. */
2
+ export declare function deriveMarkTokens(accent: string, canvas: string, fg: string): Record<string, string>;
@@ -0,0 +1,4 @@
1
+ /** Read a px or rem custom property from a computed style (appearance tokens use px). */
2
+ export declare function readCssLengthPx(element: HTMLElement, property: string, fallbackPx: number): number;
3
+ /** Virtualized convo row stride: rail row min-height + list gap. */
4
+ export declare function readNmRailRowStridePx(root?: HTMLElement): number;
@@ -0,0 +1,13 @@
1
+ export declare const BAR_OVERFLOW_MODES: {
2
+ readonly inline: 'inline';
3
+ readonly menu: 'menu';
4
+ };
5
+ export type BarOverflowMode = (typeof BAR_OVERFLOW_MODES)[keyof typeof BAR_OVERFLOW_MODES];
6
+ /** Subpixel layout can report a 1px overflow while the row still fits. */
7
+ export declare const BAR_OVERFLOW_SLACK_PX = 1;
8
+ export type BarOverflowFit = {
9
+ availableWidth: number;
10
+ neededWidth: number;
11
+ };
12
+ export declare function resolveBarOverflow(fit: BarOverflowFit): BarOverflowMode;
13
+ export declare function eventTargetInBar(root: HTMLElement | null, target: EventTarget | null, layerSelector: string): boolean;
@@ -0,0 +1,8 @@
1
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
2
+ export type LogContext = Record<string, unknown>;
3
+ export declare function createLogger(moduleName: string): {
4
+ debug(operation: string, message: string, context?: LogContext): void;
5
+ info(operation: string, message: string, context?: LogContext): void;
6
+ warn(operation: string, message: string, context?: LogContext): void;
7
+ error(operation: string, message: string, context?: LogContext): void;
8
+ };
@@ -0,0 +1,72 @@
1
+ /** Dropdown motion. Duration, ease, and shift are the `--reveal`, `--ease`, and `--nm-space-8` tokens. */
2
+ export declare const MENU_MOTION_EASE_FALLBACK: readonly [0.22, 1, 0.36, 1];
3
+ export declare const MENU_MOTION_DURATION_FALLBACK_S = 0.25;
4
+ export declare const MENU_MOTION_SHIFT_FALLBACK_PX = 8;
5
+ export declare const MENU_MOTION_SCALE_FALLBACK = 0.98;
6
+ export type MenuEase = readonly [number, number, number, number];
7
+ export type MenuMotionFrame = {
8
+ duration: number;
9
+ ease: MenuEase;
10
+ shift: number;
11
+ scale: number;
12
+ };
13
+ export declare function parseCubicBezier(raw: string): MenuEase | null;
14
+ export declare function parseDurationSeconds(raw: string): number | null;
15
+ export declare function parseLengthPx(raw: string, rootFontPx: number): number | null;
16
+ export declare function parseUnitScale(raw: string): number | null;
17
+ export declare function readMenuMotionFrame(): MenuMotionFrame;
18
+ export declare function menuMotionOrigin(placement: string | null | undefined): {
19
+ originX: number;
20
+ originY: number;
21
+ };
22
+ /** Offset toward the trigger so the panel eases out of its anchor. */
23
+ export declare function menuMotionOffset(placement: string | null | undefined, shift: number): {
24
+ x: number;
25
+ y: number;
26
+ };
27
+ export declare function menuMotionVariants(input: MenuMotionFrame & {
28
+ reduceMotion: boolean;
29
+ placement?: string | null;
30
+ }): {
31
+ closed: {
32
+ opacity: number;
33
+ x: number;
34
+ y: number;
35
+ scale: number;
36
+ };
37
+ open: {
38
+ opacity: number;
39
+ x: number;
40
+ y: number;
41
+ scale: number;
42
+ };
43
+ transition: {
44
+ duration: number;
45
+ ease: MenuEase;
46
+ };
47
+ };
48
+ type MenuMotionState = {
49
+ opacity: number;
50
+ x: number;
51
+ y: number;
52
+ scale: number;
53
+ transition: {
54
+ duration: number;
55
+ ease: MenuEase;
56
+ };
57
+ };
58
+ type MenuMotionBinding = {
59
+ initial: 'closed';
60
+ animate: 'open';
61
+ exit: 'closed';
62
+ variants: {
63
+ closed: MenuMotionState;
64
+ open: MenuMotionState;
65
+ };
66
+ style: {
67
+ originX: number;
68
+ originY: number;
69
+ };
70
+ };
71
+ export declare function useMenuMotion(placement?: string | null): MenuMotionBinding;
72
+ export {};
@@ -0,0 +1,2 @@
1
+ /** Joins class names and drops the empty ones. The one helper every Base UI wrapper uses. */
2
+ export declare function nmClass(...names: (string | false | null | undefined)[]): string;
@@ -0,0 +1,9 @@
1
+ export declare function setNordmanUiLocale(locale: string | null | undefined, options?: {
2
+ notify?: boolean;
3
+ }): void;
4
+ export declare function getNordmanUiLocale(): string;
5
+ export declare function subscribeNordmanUiLocale(listener: () => void): () => void;
6
+ /** Re-renders this component when the Nordman UI language changes, without remounting the app. */
7
+ export declare function useNordmanUiLocale(): string;
8
+ /** English copy for English locales; every other locale reads Swedish. */
9
+ export declare function isEnglishNordmanLocale(locale: string): boolean;
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="code">
3
+ <path id="Vector" d="M9.33333 10.5L12.8333 7L9.33333 3.5M4.66667 3.5L1.16667 7L4.66667 10.5" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="file-code-2">
3
+ <path id="Vector" d="M2.33333 12.8333H10.5C10.8094 12.8333 11.1062 12.7104 11.325 12.4916C11.5437 12.2728 11.6667 11.9761 11.6667 11.6667V4.08333L8.75 1.16667H3.5C3.19058 1.16667 2.89383 1.28958 2.67504 1.50838C2.45625 1.72717 2.33333 2.02391 2.33333 2.33333V4.66667M8.16667 1.16667V3.5C8.16667 3.80942 8.28958 4.10617 8.50838 4.32496C8.72717 4.54375 9.02391 4.66667 9.33333 4.66667H11.6667M2.91667 7L1.16667 8.75L2.91667 10.5M5.25 10.5L7 8.75L5.25 7" stroke="#A3A3A3" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="copy">
3
+ <path id="Vector" d="M3.33333 13.3333C2.41667 13.3333 1.66667 12.5833 1.66667 11.6667V3.33333C1.66667 2.41667 2.41667 1.66667 3.33333 1.66667H11.6667C12.5833 1.66667 13.3333 2.41667 13.3333 3.33333M8.33333 6.66667H16.6667C17.5871 6.66667 18.3333 7.41286 18.3333 8.33333V16.6667C18.3333 17.5871 17.5871 18.3333 16.6667 18.3333H8.33333C7.41286 18.3333 6.66667 17.5871 6.66667 16.6667V8.33333C6.66667 7.41286 7.41286 6.66667 8.33333 6.66667Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,7 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="ellipsis">
3
+ <circle cx="12" cy="12" r="1" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
4
+ <circle cx="19" cy="12" r="1" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
5
+ <circle cx="5" cy="12" r="1" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
6
+ </g>
7
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="bot-message-square">
3
+ <path id="Vector" d="M10 5V1.66667H6.66667M1.66667 10H3.33333M7.5 9.16667V10.8333M12.5 9.16667V10.8333M16.6667 10H18.3333M6.66667 15L3.33333 18.3333V6.66667C3.33333 6.22464 3.50893 5.80072 3.82149 5.48816C4.13405 5.17559 4.55797 5 5 5H15C15.442 5 15.8659 5.17559 16.1785 5.48816C16.4911 5.80072 16.6667 6.22464 16.6667 6.66667V13.3333C16.6667 13.7754 16.4911 14.1993 16.1785 14.5118C15.8659 14.8244 15.442 15 15 15H6.66667Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,10 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="globe" clip-path="url(#clip0_0_38)">
3
+ <path id="Vector" d="M12.8333 7C12.8333 10.2217 10.2217 12.8333 7 12.8333M12.8333 7C12.8333 3.77834 10.2217 1.16667 7 1.16667M12.8333 7H1.16667M7 12.8333C3.77834 12.8333 1.16667 10.2217 1.16667 7M7 12.8333C5.50214 11.2606 4.66667 9.1719 4.66667 7C4.66667 4.8281 5.50214 2.73942 7 1.16667M7 12.8333C8.49786 11.2606 9.33333 9.1719 9.33333 7C9.33333 4.8281 8.49786 2.73942 7 1.16667M1.16667 7C1.16667 3.77834 3.77834 1.16667 7 1.16667" stroke="#A3A3A3" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </g>
5
+ <defs>
6
+ <clipPath id="clip0_0_38">
7
+ <rect width="14" height="14" fill="white"/>
8
+ </clipPath>
9
+ </defs>
10
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="play">
3
+ <path id="Vector" d="M3.5 1.75L11.6667 7L3.5 12.25V1.75Z" stroke="#A3A3A3" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="plus">
3
+ <path id="Vector" d="M2.91667 7H11.0833M7 2.91667V11.0833" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="app-window-mac">
3
+ <path id="Vector" d="M3.5 4.66667H3.50583M5.83333 4.66667H5.83917M8.16667 4.66667H8.1725M2.33333 2.33333H11.6667C12.311 2.33333 12.8333 2.85567 12.8333 3.5V10.5C12.8333 11.1443 12.311 11.6667 11.6667 11.6667H2.33333C1.689 11.6667 1.16667 11.1443 1.16667 10.5V3.5C1.16667 2.85567 1.689 2.33333 2.33333 2.33333Z" stroke="#A3A3A3" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="audio-lines">
3
+ <path id="Vector" d="M1.66667 8.33333V10.8333M5 5V14.1667M8.33333 2.5V17.5M11.6667 6.66667V12.5M15 4.16667V15M18.3333 8.33333V10.8333" stroke-linecap="round" stroke-linejoin="round" stroke="black"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="check">
3
+ <path id="Vector" d="M15 4.5L6.75 12.75L3 9" stroke="#141414" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="globe">
3
+ <path id="Vector" d="M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5M16.5 9C16.5 4.85786 13.1421 1.5 9 1.5M16.5 9H1.5M9 16.5C4.85786 16.5 1.5 13.1421 1.5 9M9 16.5C7.07418 14.4779 6 11.7924 6 9C6 6.20756 7.07418 3.52212 9 1.5M9 16.5C10.9258 14.4779 12 11.7924 12 9C12 6.20756 10.9258 3.52212 9 1.5M1.5 9C1.5 4.85786 4.85786 1.5 9 1.5" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="app-window-mac">
3
+ <path id="Vector" d="M3.5 4.66667H3.50583M5.83333 4.66667H5.83917M8.16667 4.66667H8.1725M2.33333 2.33333H11.6667C12.311 2.33333 12.8333 2.85567 12.8333 3.5V10.5C12.8333 11.1443 12.311 11.6667 11.6667 11.6667H2.33333C1.689 11.6667 1.16667 11.1443 1.16667 10.5V3.5C1.16667 2.85567 1.689 2.33333 2.33333 2.33333Z" stroke="#A3A3A3" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="mic">
3
+ <path id="Vector" d="M3.75 7.5V9C3.75 10.3924 4.30312 11.7277 5.28769 12.7123C6.27226 13.6969 7.60761 14.25 9 14.25C10.3924 14.25 11.7277 13.6969 12.7123 12.7123C13.6969 11.7277 14.25 10.3924 14.25 9V7.5M9 14.25V16.5M9 1.5C8.40326 1.5 7.83097 1.73705 7.40901 2.15901C6.98705 2.58097 6.75 3.15326 6.75 3.75V9C6.75 9.59674 6.98705 10.169 7.40901 10.591C7.83097 11.0129 8.40326 11.25 9 11.25C9.59674 11.25 10.169 11.0129 10.591 10.591C11.0129 10.169 11.25 9.59674 11.25 9V3.75C11.25 3.15326 11.0129 2.58097 10.591 2.15901C10.169 1.73705 9.59674 1.5 9 1.5Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="paperclip">
3
+ <path id="Vector" d="M16.08 8.2875L9.1875 15.18C8.34312 16.0244 7.19789 16.4988 6.00375 16.4988C4.80961 16.4988 3.66438 16.0244 2.82 15.18C1.97562 14.3356 1.50125 13.1904 1.50125 11.9963C1.50125 10.8021 1.97562 9.65688 2.82 8.8125L9.2475 2.385C9.81042 1.82108 10.5743 1.50388 11.3711 1.50318C12.1679 1.50248 12.9323 1.81833 13.4963 2.38125C14.0602 2.94417 14.3774 3.70805 14.3781 4.50485C14.3788 5.30164 14.0629 6.06608 13.5 6.63L7.0575 13.0575C6.77604 13.339 6.3943 13.4971 5.99625 13.4971C5.5982 13.4971 5.21646 13.339 4.935 13.0575C4.65354 12.776 4.49542 12.3943 4.49542 11.9963C4.49542 11.5982 4.65354 11.2165 4.935 10.935L11.3025 4.575" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="mouse-pointer-2">
3
+ <path id="Vector" d="M3 3L8.3025 15.75L10.185 10.2075L15.75 8.3025L3 3Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="arrow-up">
3
+ <path id="Vector" d="M14.25 9L9 3.75L3.75 9M9 3.75V14.25" stroke="#141414" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="settings-2">
3
+ <path id="Vector" d="M15 5.25H8.25M10.5 12.75H3.75M10.5 12.75C10.5 13.9926 11.5074 15 12.75 15C13.9926 15 15 13.9926 15 12.75C15 11.5074 13.9926 10.5 12.75 10.5C11.5074 10.5 10.5 11.5074 10.5 12.75ZM7.5 5.25C7.5 6.49264 6.49264 7.5 5.25 7.5C4.00736 7.5 3 6.49264 3 5.25C3 4.00736 4.00736 3 5.25 3C6.49264 3 7.5 4.00736 7.5 5.25Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="file-spreadsheet">
3
+ <path id="Vector" d="M10.5 1.5V4.5C10.5 4.89782 10.658 5.27936 10.9393 5.56066C11.2206 5.84196 11.6022 6 12 6H15M6 9.75H7.5M10.5 9.75H12M6 12.75H7.5M10.5 12.75H12M11.25 1.5H4.5C4.10218 1.5 3.72064 1.65804 3.43934 1.93934C3.15804 2.22064 3 2.60218 3 3V15C3 15.3978 3.15804 15.7794 3.43934 16.0607C3.72064 16.342 4.10218 16.5 4.5 16.5H13.5C13.8978 16.5 14.2794 16.342 14.5607 16.0607C14.842 15.7794 15 15.3978 15 15V5.25L11.25 1.5Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="x">
3
+ <path id="Vector" d="M13.5 4.5L4.5 13.5M4.5 4.5L13.5 13.5" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M2.333 5.25H4.083L7 3.5V10.5L4.083 8.75H2.333C2.011 8.75 1.75 8.489 1.75 8.167V5.833C1.75 5.511 2.011 5.25 2.333 5.25Z" stroke="#A3A3A3" stroke-linecap="round" stroke-linejoin="round"/>
3
+ <path d="M9.333 5.25C9.8 5.717 10.083 6.333 10.083 7C10.083 7.667 9.8 8.283 9.333 8.75" stroke="#A3A3A3" stroke-linecap="round" stroke-linejoin="round"/>
4
+ <path d="M10.792 3.792C11.608 4.608 12.083 5.75 12.083 7C12.083 8.25 11.608 9.392 10.792 10.208" stroke="#A3A3A3" stroke-linecap="round" stroke-linejoin="round"/>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="arrow-down">
3
+ <path id="Vector" d="M10 4.16667V15.8333M4.16667 10L10 15.8333L15.8333 10" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="move-diagonal">
3
+ <path id="Vector" d="M15.8333 9.16667V4.16667H10.8333M15.8333 4.16667L4.16667 15.8333M4.16667 10.8333V15.8333H9.16667" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,10 @@
1
+ <svg preserveAspectRatio="none" overflow="visible" style="display: block;" width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="layout-grid">
3
+ <g id="Vector">
4
+ <path d="M7.5 2.5H3.33333C2.8731 2.5 2.5 2.8731 2.5 3.33333V7.5C2.5 7.96024 2.8731 8.33333 3.33333 8.33333H7.5C7.96024 8.33333 8.33333 7.96024 8.33333 7.5V3.33333C8.33333 2.8731 7.96024 2.5 7.5 2.5Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
5
+ <path d="M16.6667 2.5H12.5C12.0398 2.5 11.6667 2.8731 11.6667 3.33333V7.5C11.6667 7.96024 12.0398 8.33333 12.5 8.33333H16.6667C17.1269 8.33333 17.5 7.96024 17.5 7.5V3.33333C17.5 2.8731 17.1269 2.5 16.6667 2.5Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
6
+ <path d="M16.6667 11.6667H12.5C12.0398 11.6667 11.6667 12.0398 11.6667 12.5V16.6667C11.6667 17.1269 12.0398 17.5 12.5 17.5H16.6667C17.1269 17.5 17.5 17.1269 17.5 16.6667V12.5C17.5 12.0398 17.1269 11.6667 16.6667 11.6667Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
7
+ <path d="M7.5 11.6667H3.33333C2.8731 11.6667 2.5 12.0398 2.5 12.5V16.6667C2.5 17.1269 2.8731 17.5 3.33333 17.5H7.5C7.96024 17.5 8.33333 17.1269 8.33333 16.6667V12.5C8.33333 12.0398 7.96024 11.6667 7.5 11.6667Z" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
8
+ </g>
9
+ </g>
10
+ </svg>