@lateralus-ai/shipping-ui 1.4.16 → 2.0.0-dev.10

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 (451) hide show
  1. package/README.md +70 -53
  2. package/dist/components/Checkbox.d.ts +9 -0
  3. package/dist/components/Chip.d.ts +15 -0
  4. package/dist/components/EmptyState.d.ts +10 -0
  5. package/dist/components/Entry.d.ts +33 -0
  6. package/dist/components/Header.d.ts +9 -0
  7. package/dist/components/Input.d.ts +11 -0
  8. package/dist/components/InputType.d.ts +10 -0
  9. package/dist/components/Modal.d.ts +36 -0
  10. package/dist/components/ModalPanel.d.ts +7 -7
  11. package/dist/components/PdfViewer/ImageViewer.d.ts +2 -2
  12. package/dist/components/PdfViewer/PdfViewer.d.ts +2 -2
  13. package/dist/components/ReportInput.d.ts +10 -0
  14. package/dist/components/Tab.d.ts +7 -0
  15. package/dist/components/Tabs.d.ts +26 -12
  16. package/dist/components/index.d.ts +12 -4
  17. package/dist/domain/Filters/FilterPill.d.ts +6 -0
  18. package/dist/domain/Filters/FilteredPill.d.ts +8 -0
  19. package/dist/domain/Filters/FiltersBar.d.ts +12 -0
  20. package/dist/domain/Filters/index.d.ts +3 -0
  21. package/dist/domain/Forms/FormCard.d.ts +12 -0
  22. package/dist/domain/Forms/FormHeader.d.ts +8 -0
  23. package/dist/domain/Forms/ListRow.d.ts +8 -0
  24. package/dist/domain/Forms/RiskMeter.d.ts +8 -0
  25. package/dist/domain/Forms/index.d.ts +4 -0
  26. package/dist/domain/Library/File.d.ts +8 -0
  27. package/dist/domain/Library/Folder.d.ts +8 -0
  28. package/dist/domain/Library/Folders.d.ts +11 -0
  29. package/dist/domain/Library/ListRow.d.ts +8 -0
  30. package/dist/domain/Library/Navigation.d.ts +7 -0
  31. package/dist/domain/Library/index.d.ts +5 -0
  32. package/dist/domain/Report/InfoHeading.d.ts +7 -0
  33. package/dist/domain/Report/InfoRow.d.ts +8 -0
  34. package/dist/domain/Report/Report.d.ts +7 -0
  35. package/dist/domain/Report/SectionHeader.d.ts +10 -0
  36. package/dist/domain/Report/TaskRow.d.ts +11 -0
  37. package/dist/domain/Report/index.d.ts +5 -0
  38. package/dist/domain/Settings/EquipmentRow.d.ts +8 -0
  39. package/dist/domain/Settings/MemberRow.d.ts +11 -0
  40. package/dist/domain/Settings/SettingRow.d.ts +10 -0
  41. package/dist/domain/Settings/index.d.ts +3 -0
  42. package/dist/domain/Ships/ShipRow.d.ts +10 -0
  43. package/dist/domain/Ships/index.d.ts +1 -0
  44. package/dist/domain/Workflows/GroupHeader.d.ts +8 -0
  45. package/dist/domain/Workflows/Importance.d.ts +8 -0
  46. package/dist/domain/Workflows/Progress.d.ts +7 -0
  47. package/dist/domain/Workflows/Question.d.ts +9 -0
  48. package/dist/domain/Workflows/StatusPopover.d.ts +7 -0
  49. package/dist/domain/Workflows/Task.d.ts +9 -0
  50. package/dist/domain/Workflows/TaskHeader.d.ts +9 -0
  51. package/dist/domain/Workflows/WorkflowFilters.d.ts +6 -0
  52. package/dist/domain/Workflows/WorkflowForm.d.ts +8 -0
  53. package/dist/domain/Workflows/WorkflowHeader.d.ts +11 -0
  54. package/dist/domain/Workflows/WorkflowListItem.d.ts +11 -0
  55. package/dist/domain/Workflows/WorkflowProgress.d.ts +6 -0
  56. package/dist/domain/Workflows/WorkflowRow.d.ts +10 -0
  57. package/dist/domain/Workflows/index.d.ts +13 -0
  58. package/dist/domain/index.d.ts +7 -0
  59. package/dist/icons/ArrowIcon.d.ts +8 -0
  60. package/dist/icons/ChevronIcon.d.ts +8 -0
  61. package/dist/icons/Icon.d.ts +96 -0
  62. package/dist/icons/arrow-paths.d.ts +12 -0
  63. package/dist/icons/chevron-paths.d.ts +27 -0
  64. package/dist/icons/createIcon.d.ts +34 -0
  65. package/dist/icons/generated.d.ts +68 -0
  66. package/dist/icons/icon-sizes.d.ts +5 -0
  67. package/dist/icons/icons-data.d.ts +1023 -0
  68. package/dist/icons/index.d.ts +13 -0
  69. package/dist/icons/types.d.ts +10 -0
  70. package/dist/illustrations/AuditPreparation.d.ts +4 -0
  71. package/dist/illustrations/CompletedTasks.d.ts +4 -0
  72. package/dist/illustrations/Creation.d.ts +4 -0
  73. package/dist/illustrations/InternalAudit.d.ts +4 -0
  74. package/dist/illustrations/Invite.d.ts +4 -0
  75. package/dist/illustrations/PortStateControl.d.ts +4 -0
  76. package/dist/illustrations/Processing.d.ts +4 -0
  77. package/dist/illustrations/QuestionsDone.d.ts +4 -0
  78. package/dist/illustrations/RightShipInspection.d.ts +4 -0
  79. package/dist/illustrations/Upload.d.ts +4 -0
  80. package/dist/illustrations/WorkflowCreated.d.ts +4 -0
  81. package/dist/illustrations/Workflows.d.ts +4 -0
  82. package/dist/illustrations/createIllustration.d.ts +11 -0
  83. package/dist/illustrations/index.d.ts +13 -0
  84. package/dist/index.cjs +64 -80
  85. package/dist/index.d.ts +9 -3
  86. package/dist/index.esm.js +11535 -36619
  87. package/dist/patterns/Chat/Attachment.d.ts +6 -0
  88. package/dist/patterns/Chat/ChatEntry.d.ts +10 -0
  89. package/dist/patterns/Chat/ChatHeader.d.ts +7 -0
  90. package/dist/patterns/Chat/ChatInput.d.ts +5 -0
  91. package/dist/patterns/Chat/ChatStatus.d.ts +6 -0
  92. package/dist/patterns/Chat/ChatTile.d.ts +9 -0
  93. package/dist/patterns/Chat/Copilot.d.ts +8 -0
  94. package/dist/patterns/Chat/Draft.d.ts +5 -0
  95. package/dist/patterns/Chat/Greeting.d.ts +7 -0
  96. package/dist/patterns/Chat/Reference.d.ts +6 -0
  97. package/dist/patterns/Chat/Source.d.ts +6 -0
  98. package/dist/patterns/Chat/Sources.d.ts +5 -0
  99. package/dist/patterns/Chat/Suggestion.d.ts +5 -0
  100. package/dist/patterns/Chat/Suggestions.d.ts +4 -0
  101. package/dist/patterns/Chat/index.d.ts +14 -0
  102. package/dist/patterns/Modal/Invitee.d.ts +8 -0
  103. package/dist/patterns/Modal/ModalFooter.d.ts +6 -0
  104. package/dist/patterns/Modal/ModalHeader.d.ts +10 -0
  105. package/dist/patterns/Modal/index.d.ts +3 -0
  106. package/dist/patterns/Search/Pill.d.ts +10 -0
  107. package/dist/patterns/Search/PillInfo.d.ts +8 -0
  108. package/dist/patterns/Search/ResultRow.d.ts +19 -0
  109. package/dist/patterns/Search/SearchModal.d.ts +88 -0
  110. package/dist/patterns/Search/SectionHeader.d.ts +5 -0
  111. package/dist/patterns/Search/index.d.ts +5 -0
  112. package/dist/patterns/Sidebar/Account.d.ts +22 -0
  113. package/dist/patterns/Sidebar/ActivityNavGroup.d.ts +17 -0
  114. package/dist/patterns/Sidebar/CollapsibleNavGroup.d.ts +24 -0
  115. package/dist/patterns/Sidebar/Indicator.d.ts +6 -0
  116. package/dist/patterns/Sidebar/NewChat.d.ts +10 -0
  117. package/dist/patterns/Sidebar/Sidebar.d.ts +13 -0
  118. package/dist/patterns/Sidebar/SidebarAction.d.ts +11 -0
  119. package/dist/patterns/Sidebar/SidebarEntry.d.ts +25 -0
  120. package/dist/patterns/Sidebar/SidebarHeading.d.ts +11 -0
  121. package/dist/patterns/Sidebar/SidebarLink.d.ts +22 -0
  122. package/dist/patterns/Sidebar/SidebarShell.d.ts +11 -0
  123. package/dist/patterns/Sidebar/Switcher.d.ts +8 -0
  124. package/dist/patterns/Sidebar/constants.d.ts +2 -0
  125. package/dist/patterns/Sidebar/figma-assets.d.ts +3 -0
  126. package/dist/patterns/Sidebar/figma-demo-content.d.ts +75 -0
  127. package/dist/patterns/Sidebar/figma-sidebar-nav.d.ts +12 -0
  128. package/dist/patterns/Sidebar/index.d.ts +13 -0
  129. package/dist/patterns/Sidebar/sidebar-styles.d.ts +45 -0
  130. package/dist/patterns/Skeleton/Skeleton.d.ts +6 -0
  131. package/dist/patterns/Skeleton/index.d.ts +1 -0
  132. package/dist/patterns/index.d.ts +5 -0
  133. package/dist/primitives/Avatar.d.ts +10 -0
  134. package/dist/primitives/Badge.d.ts +14 -0
  135. package/dist/primitives/Button.d.ts +22 -0
  136. package/dist/primitives/Callout.d.ts +7 -0
  137. package/dist/primitives/Count.d.ts +5 -0
  138. package/dist/primitives/DropdownMenu.d.ts +15 -0
  139. package/dist/primitives/GroupedAvatars.d.ts +7 -0
  140. package/dist/primitives/IconButton.d.ts +16 -0
  141. package/dist/primitives/Logo.d.ts +8 -0
  142. package/dist/primitives/MenuItem.d.ts +7 -0
  143. package/dist/primitives/Switch.d.ts +7 -0
  144. package/dist/primitives/ThinkingDot.d.ts +4 -0
  145. package/dist/primitives/Tooltip.d.ts +12 -0
  146. package/dist/primitives/button-styles.d.ts +4 -0
  147. package/dist/primitives/index.d.ts +15 -0
  148. package/dist/style.css +1 -1
  149. package/dist/tailwind-theme.d.ts +234 -198
  150. package/dist/theme-entry-BUK3MJUJ.mjs +261 -0
  151. package/dist/theme-entry-ygTpGaNC.js +1 -0
  152. package/dist/theme-entry.d.ts +2 -0
  153. package/dist/theme.cjs +1 -0
  154. package/dist/theme.d.ts +2 -0
  155. package/dist/theme.esm.js +5 -0
  156. package/dist/tokens/colors.d.ts +148 -0
  157. package/dist/tokens/elevation.d.ts +11 -0
  158. package/dist/tokens/index.d.ts +4 -0
  159. package/dist/tokens/semantic.d.ts +89 -0
  160. package/dist/tokens/typography.d.ts +85 -0
  161. package/package.json +36 -7
  162. package/src/components/Checkbox.tsx +77 -0
  163. package/src/components/Chip.tsx +69 -0
  164. package/src/components/EmptyState.tsx +44 -0
  165. package/src/components/Entry.tsx +138 -0
  166. package/src/components/Header.tsx +39 -0
  167. package/src/components/Input.tsx +69 -0
  168. package/src/components/InputType.tsx +76 -0
  169. package/src/components/Modal.tsx +141 -0
  170. package/src/components/ModalPanel.tsx +22 -37
  171. package/src/components/PdfViewer/ImageViewer.tsx +121 -182
  172. package/src/components/PdfViewer/PdfViewer.tsx +103 -155
  173. package/src/components/ReportInput.tsx +65 -0
  174. package/src/components/Tab.tsx +33 -0
  175. package/src/components/Tabs.tsx +146 -43
  176. package/src/components/index.ts +43 -6
  177. package/src/domain/Filters/FilterPill.tsx +25 -0
  178. package/src/domain/Filters/FilteredPill.tsx +39 -0
  179. package/src/domain/Filters/FiltersBar.tsx +76 -0
  180. package/src/domain/Filters/index.ts +3 -0
  181. package/src/domain/Forms/FormCard.tsx +61 -0
  182. package/src/domain/Forms/FormHeader.tsx +34 -0
  183. package/src/domain/Forms/ListRow.tsx +40 -0
  184. package/src/domain/Forms/RiskMeter.tsx +50 -0
  185. package/src/domain/Forms/index.ts +4 -0
  186. package/src/domain/Library/File.tsx +59 -0
  187. package/src/domain/Library/Folder.tsx +55 -0
  188. package/src/domain/Library/Folders.tsx +43 -0
  189. package/src/domain/Library/ListRow.tsx +40 -0
  190. package/src/domain/Library/Navigation.tsx +31 -0
  191. package/src/domain/Library/index.ts +5 -0
  192. package/src/domain/Report/InfoHeading.tsx +25 -0
  193. package/src/domain/Report/InfoRow.tsx +35 -0
  194. package/src/domain/Report/Report.tsx +53 -0
  195. package/src/domain/Report/SectionHeader.tsx +43 -0
  196. package/src/domain/Report/TaskRow.tsx +57 -0
  197. package/src/domain/Report/index.ts +5 -0
  198. package/src/domain/Settings/EquipmentRow.tsx +39 -0
  199. package/src/domain/Settings/MemberRow.tsx +53 -0
  200. package/src/domain/Settings/SettingRow.tsx +66 -0
  201. package/src/domain/Settings/index.ts +3 -0
  202. package/src/domain/Ships/ShipRow.tsx +49 -0
  203. package/src/domain/Ships/index.ts +1 -0
  204. package/src/domain/Workflows/GroupHeader.tsx +48 -0
  205. package/src/domain/Workflows/Importance.tsx +48 -0
  206. package/src/domain/Workflows/Progress.tsx +55 -0
  207. package/src/domain/Workflows/Question.tsx +42 -0
  208. package/src/domain/Workflows/StatusPopover.tsx +53 -0
  209. package/src/domain/Workflows/Task.tsx +46 -0
  210. package/src/domain/Workflows/TaskHeader.tsx +51 -0
  211. package/src/domain/Workflows/WorkflowFilters.tsx +40 -0
  212. package/src/domain/Workflows/WorkflowForm.tsx +40 -0
  213. package/src/domain/Workflows/WorkflowHeader.tsx +62 -0
  214. package/src/domain/Workflows/WorkflowListItem.tsx +45 -0
  215. package/src/domain/Workflows/WorkflowProgress.tsx +36 -0
  216. package/src/domain/Workflows/WorkflowRow.tsx +43 -0
  217. package/src/domain/Workflows/index.ts +13 -0
  218. package/src/domain/index.ts +37 -0
  219. package/src/icons/ArrowIcon.tsx +42 -0
  220. package/src/icons/ChevronIcon.tsx +42 -0
  221. package/src/icons/Icon.tsx +184 -0
  222. package/src/icons/arrow-paths.ts +8 -0
  223. package/src/icons/chevron-paths.ts +17 -0
  224. package/src/icons/createIcon.tsx +128 -0
  225. package/src/icons/generated.tsx +71 -0
  226. package/src/icons/icon-sizes.ts +20 -0
  227. package/src/icons/icons-data.ts +656 -0
  228. package/src/icons/index.ts +25 -0
  229. package/src/icons/types.ts +18 -0
  230. package/src/illustrations/AuditPreparation.tsx +15 -0
  231. package/src/illustrations/CompletedTasks.tsx +16 -0
  232. package/src/illustrations/Creation.tsx +13 -0
  233. package/src/illustrations/InternalAudit.tsx +13 -0
  234. package/src/illustrations/Invite.tsx +13 -0
  235. package/src/illustrations/PortStateControl.tsx +13 -0
  236. package/src/illustrations/Processing.tsx +17 -0
  237. package/src/illustrations/QuestionsDone.tsx +16 -0
  238. package/src/illustrations/RightShipInspection.tsx +18 -0
  239. package/src/illustrations/Upload.tsx +12 -0
  240. package/src/illustrations/WorkflowCreated.tsx +13 -0
  241. package/src/illustrations/Workflows.tsx +13 -0
  242. package/src/illustrations/createIllustration.tsx +30 -0
  243. package/src/illustrations/index.ts +14 -0
  244. package/src/index.ts +76 -4
  245. package/src/patterns/Chat/Attachment.tsx +27 -0
  246. package/src/patterns/Chat/ChatEntry.tsx +41 -0
  247. package/src/patterns/Chat/ChatHeader.tsx +39 -0
  248. package/src/patterns/Chat/ChatInput.tsx +35 -0
  249. package/src/patterns/Chat/ChatStatus.tsx +26 -0
  250. package/src/patterns/Chat/ChatTile.tsx +40 -0
  251. package/src/patterns/Chat/Copilot.tsx +50 -0
  252. package/src/patterns/Chat/Draft.tsx +23 -0
  253. package/src/patterns/Chat/Greeting.tsx +32 -0
  254. package/src/patterns/Chat/Reference.tsx +26 -0
  255. package/src/patterns/Chat/Source.tsx +27 -0
  256. package/src/patterns/Chat/Sources.tsx +23 -0
  257. package/src/patterns/Chat/Suggestion.tsx +23 -0
  258. package/src/patterns/Chat/Suggestions.tsx +21 -0
  259. package/src/patterns/Chat/index.ts +14 -0
  260. package/src/patterns/Modal/Invitee.tsx +44 -0
  261. package/src/patterns/Modal/ModalFooter.tsx +39 -0
  262. package/src/patterns/Modal/ModalHeader.tsx +77 -0
  263. package/src/patterns/Modal/index.ts +3 -0
  264. package/src/patterns/Search/Pill.tsx +44 -0
  265. package/src/patterns/Search/PillInfo.tsx +41 -0
  266. package/src/patterns/Search/ResultRow.tsx +44 -0
  267. package/src/patterns/Search/SearchModal.tsx +310 -0
  268. package/src/patterns/Search/SectionHeader.tsx +20 -0
  269. package/src/patterns/Search/index.ts +31 -0
  270. package/src/patterns/Sidebar/Account.tsx +193 -0
  271. package/src/patterns/Sidebar/ActivityNavGroup.tsx +71 -0
  272. package/src/patterns/Sidebar/CollapsibleNavGroup.tsx +106 -0
  273. package/src/patterns/Sidebar/Indicator.tsx +14 -0
  274. package/src/patterns/Sidebar/NewChat.tsx +71 -0
  275. package/src/patterns/Sidebar/Sidebar.tsx +363 -0
  276. package/src/patterns/Sidebar/SidebarAction.tsx +55 -0
  277. package/src/patterns/Sidebar/SidebarEntry.tsx +129 -0
  278. package/src/patterns/Sidebar/SidebarHeading.tsx +38 -0
  279. package/src/patterns/Sidebar/SidebarLink.tsx +125 -0
  280. package/src/patterns/Sidebar/SidebarShell.tsx +32 -0
  281. package/src/patterns/Sidebar/Switcher.tsx +116 -0
  282. package/src/patterns/Sidebar/assets/account-avatar-24.jpg +0 -0
  283. package/src/patterns/Sidebar/assets/account-avatar.jpg +0 -0
  284. package/src/patterns/Sidebar/assets/indicator-compliance.png +0 -0
  285. package/src/patterns/Sidebar/assets/indicator-technical.png +0 -0
  286. package/src/patterns/Sidebar/assets/logo-compliance-mark.png +5 -0
  287. package/src/patterns/Sidebar/assets/logo-compliance-mask.png +13 -0
  288. package/src/patterns/Sidebar/assets/logo-compliance.svg +17 -0
  289. package/src/patterns/Sidebar/assets/logo-technical-avatar.svg +17 -0
  290. package/src/patterns/Sidebar/assets/logo-technical-mark.png +5 -0
  291. package/src/patterns/Sidebar/assets/logo-technical.svg +16 -0
  292. package/src/patterns/Sidebar/constants.ts +2 -0
  293. package/src/patterns/Sidebar/figma-assets.ts +4 -0
  294. package/src/patterns/Sidebar/figma-demo-content.ts +30 -0
  295. package/src/patterns/Sidebar/figma-sidebar-nav.ts +79 -0
  296. package/src/patterns/Sidebar/index.ts +13 -0
  297. package/src/patterns/Sidebar/sidebar-styles.ts +101 -0
  298. package/src/patterns/Skeleton/Skeleton.tsx +56 -0
  299. package/src/patterns/Skeleton/index.ts +1 -0
  300. package/src/patterns/index.ts +5 -0
  301. package/src/primitives/Avatar.tsx +71 -0
  302. package/src/primitives/Badge.tsx +44 -0
  303. package/src/primitives/Button.tsx +231 -0
  304. package/src/primitives/Callout.tsx +21 -0
  305. package/src/primitives/Count.tsx +18 -0
  306. package/src/primitives/DropdownMenu.tsx +60 -0
  307. package/src/primitives/GroupedAvatars.tsx +36 -0
  308. package/src/primitives/IconButton.tsx +56 -0
  309. package/src/primitives/Logo.tsx +43 -0
  310. package/src/primitives/MenuItem.tsx +35 -0
  311. package/src/primitives/Switch.tsx +38 -0
  312. package/src/primitives/ThinkingDot.tsx +34 -0
  313. package/src/primitives/Tooltip.tsx +42 -0
  314. package/src/primitives/button-styles.ts +92 -0
  315. package/src/primitives/index.ts +18 -0
  316. package/src/stories/_layout/FigmaPage.tsx +94 -0
  317. package/src/stories/_layout/index.ts +8 -0
  318. package/src/stories/canvases/ButtonsCanvas.tsx +107 -0
  319. package/src/stories/canvases/ButtonsMatrixCanvas.tsx +65 -0
  320. package/src/stories/canvases/ChatCanvas.tsx +130 -0
  321. package/src/stories/canvases/ColorTokensCanvas.tsx +16 -0
  322. package/src/stories/canvases/ColorsCanvas.tsx +101 -0
  323. package/src/stories/canvases/ContentCanvas.tsx +157 -0
  324. package/src/stories/canvases/CoreCanvas.tsx +125 -0
  325. package/src/stories/canvases/DomainFormsCanvas.tsx +67 -0
  326. package/src/stories/canvases/FiltersCanvas.tsx +41 -0
  327. package/src/stories/canvases/FormsCanvas.tsx +71 -0
  328. package/src/stories/canvases/IconsCanvas.tsx +99 -0
  329. package/src/stories/canvases/IllustrationsCanvas.tsx +50 -0
  330. package/src/stories/canvases/LibraryCanvas.tsx +67 -0
  331. package/src/stories/canvases/ModalsCanvas.tsx +54 -0
  332. package/src/stories/canvases/RaiseLevelsCanvas.tsx +27 -0
  333. package/src/stories/canvases/ReportCanvas.tsx +33 -0
  334. package/src/stories/canvases/ReportLayoutCanvas.tsx +19 -0
  335. package/src/stories/canvases/SearchCanvas.tsx +150 -0
  336. package/src/stories/canvases/SettingsCanvas.tsx +41 -0
  337. package/src/stories/canvases/ShipsCanvas.tsx +38 -0
  338. package/src/stories/canvases/SidebarCanvas.tsx +147 -0
  339. package/src/stories/canvases/SidebarLayoutsCanvas.tsx +71 -0
  340. package/src/stories/canvases/SidebarPlayground.tsx +35 -0
  341. package/src/stories/canvases/SkeletonsCanvas.tsx +30 -0
  342. package/src/stories/canvases/TypographyCanvas.tsx +53 -0
  343. package/src/stories/canvases/WorkflowsCanvas.tsx +129 -0
  344. package/src/stories/canvases/figma-buttons-layout.ts +83 -0
  345. package/src/stories/canvases/figma-icons-layout.ts +318 -0
  346. package/src/stories/canvases/figma-sidebar-layout.ts +212 -0
  347. package/src/stories/canvases/figma-sidebar-layouts-layout.ts +84 -0
  348. package/src/stories/canvases/figma-widths.ts +28 -0
  349. package/src/stories/canvases/helpers.tsx +146 -0
  350. package/src/stories/components/Buttons.stories.tsx +12 -0
  351. package/src/stories/components/Chat.stories.tsx +12 -0
  352. package/src/stories/components/Content.stories.tsx +12 -0
  353. package/src/stories/components/Core.stories.tsx +12 -0
  354. package/src/stories/components/DomainForms.stories.tsx +12 -0
  355. package/src/stories/components/Filters.stories.tsx +12 -0
  356. package/src/stories/components/Forms.stories.tsx +12 -0
  357. package/src/stories/components/Icons.stories.tsx +12 -0
  358. package/src/stories/components/Illustrations.stories.tsx +12 -0
  359. package/src/stories/components/Library.stories.tsx +12 -0
  360. package/src/stories/components/Modals.stories.tsx +12 -0
  361. package/src/stories/components/Report.stories.tsx +12 -0
  362. package/src/stories/components/ReportLayout.stories.tsx +12 -0
  363. package/src/stories/components/Search.stories.tsx +12 -0
  364. package/src/stories/components/Settings.stories.tsx +12 -0
  365. package/src/stories/components/Ships.stories.tsx +12 -0
  366. package/src/stories/components/Sidebar.stories.tsx +37 -0
  367. package/src/stories/components/SidebarLayouts.stories.tsx +12 -0
  368. package/src/stories/components/Skeletons.stories.tsx +12 -0
  369. package/src/stories/components/Workflows.stories.tsx +12 -0
  370. package/src/stories/style-guide/Buttons.stories.tsx +12 -0
  371. package/src/stories/style-guide/ColorTokens.stories.tsx +12 -0
  372. package/src/stories/style-guide/Colors.stories.tsx +12 -0
  373. package/src/stories/style-guide/RaiseLevels.stories.tsx +12 -0
  374. package/src/stories/style-guide/Typography.stories.tsx +12 -0
  375. package/src/style.css +169 -2
  376. package/src/tailwind-theme.ts +164 -240
  377. package/src/theme-entry.ts +2 -0
  378. package/src/tokens/colors.ts +82 -0
  379. package/src/tokens/elevation.ts +12 -0
  380. package/src/tokens/index.ts +4 -0
  381. package/src/tokens/semantic.ts +89 -0
  382. package/src/tokens/typography.ts +21 -0
  383. package/tailwind.config.ts +12 -0
  384. package/dist/components/HelloWorld.d.ts +0 -1
  385. package/dist/components/InputPrompt.d.ts +0 -20
  386. package/dist/components/SearchModal.d.ts +0 -24
  387. package/dist/components/Sidebar/Button.d.ts +0 -7
  388. package/dist/components/Sidebar/Container.d.ts +0 -5
  389. package/dist/components/Sidebar/Item.d.ts +0 -9
  390. package/dist/components/Sidebar/Layout.d.ts +0 -10
  391. package/dist/components/Sidebar/Provider.d.ts +0 -14
  392. package/dist/components/Sidebar/SecondaryItem.d.ts +0 -9
  393. package/dist/components/Sidebar/SideContainer.d.ts +0 -5
  394. package/dist/components/Sidebar/ToggleCollapseButton.d.ts +0 -1
  395. package/dist/components/Sidebar/index.d.ts +0 -8
  396. package/dist/components/icons/CloseSidebarIcon.d.ts +0 -2
  397. package/dist/components/icons/CloseSidebarMidIcon.d.ts +0 -1
  398. package/dist/components/icons/ExpandIcon.d.ts +0 -3
  399. package/dist/components/icons/SendArrowIcon.d.ts +0 -4
  400. package/dist/components/icons/SendArrowIconGreen.d.ts +0 -4
  401. package/dist/components/icons/SettingsIcon.d.ts +0 -3
  402. package/dist/components/icons/XIcon.d.ts +0 -3
  403. package/dist/material-theme.d.ts +0 -442
  404. package/dist/stories/Buttons.d.ts +0 -1
  405. package/dist/stories/Checkbox.d.ts +0 -1
  406. package/dist/stories/ColorPalette.d.ts +0 -1
  407. package/dist/stories/Dropdowns.d.ts +0 -1
  408. package/dist/stories/InputPrompt.d.ts +0 -1
  409. package/dist/stories/SearchModal.d.ts +0 -1
  410. package/dist/stories/Sidebar.d.ts +0 -1
  411. package/dist/stories/Typography.d.ts +0 -1
  412. package/src/components/HelloWorld.tsx +0 -3
  413. package/src/components/InputPrompt.tsx +0 -96
  414. package/src/components/SearchModal.tsx +0 -320
  415. package/src/components/Sidebar/Button.tsx +0 -20
  416. package/src/components/Sidebar/Container.tsx +0 -31
  417. package/src/components/Sidebar/Item.tsx +0 -39
  418. package/src/components/Sidebar/Layout.tsx +0 -32
  419. package/src/components/Sidebar/Provider.tsx +0 -47
  420. package/src/components/Sidebar/SecondaryItem.tsx +0 -39
  421. package/src/components/Sidebar/SideContainer.tsx +0 -31
  422. package/src/components/Sidebar/ToggleCollapseButton.tsx +0 -24
  423. package/src/components/Sidebar/index.ts +0 -8
  424. package/src/components/icons/CloseSidebarIcon.tsx +0 -19
  425. package/src/components/icons/CloseSidebarMidIcon.tsx +0 -19
  426. package/src/components/icons/ExpandIcon.tsx +0 -21
  427. package/src/components/icons/SendArrowIcon.tsx +0 -23
  428. package/src/components/icons/SendArrowIconGreen.tsx +0 -17
  429. package/src/components/icons/SettingsIcon.tsx +0 -33
  430. package/src/components/icons/XIcon.tsx +0 -21
  431. package/src/material-theme.ts +0 -477
  432. package/src/stories/Buttons.stories.tsx +0 -15
  433. package/src/stories/Buttons.tsx +0 -52
  434. package/src/stories/Checkbox.stories.tsx +0 -15
  435. package/src/stories/Checkbox.tsx +0 -56
  436. package/src/stories/ColorPalette.stories.tsx +0 -15
  437. package/src/stories/ColorPalette.tsx +0 -85
  438. package/src/stories/DocumentEditor.stories.tsx +0 -287
  439. package/src/stories/Dropdowns.stories.tsx +0 -15
  440. package/src/stories/Dropdowns.tsx +0 -52
  441. package/src/stories/InputPrompt.stories.tsx +0 -15
  442. package/src/stories/InputPrompt.tsx +0 -63
  443. package/src/stories/ModalHeader.stories.tsx +0 -36
  444. package/src/stories/PDFViewer.stories.tsx +0 -39
  445. package/src/stories/SearchModal.stories.tsx +0 -132
  446. package/src/stories/SearchModal.tsx +0 -82
  447. package/src/stories/Sidebar.stories.tsx +0 -15
  448. package/src/stories/Sidebar.tsx +0 -108
  449. package/src/stories/Tabs.stories.tsx +0 -51
  450. package/src/stories/Typography.stories.tsx +0 -15
  451. package/src/stories/Typography.tsx +0 -110
@@ -0,0 +1,129 @@
1
+ import { type MouseEvent, type ReactNode, useState } from "react";
2
+ import { DropdownMenu, DropdownMenuItem, IconButton } from "../../primitives";
3
+ import { MoreIcon } from "../../icons";
4
+ import { cn } from "../../utils/cn";
5
+ import {
6
+ sidebarAnchorClass,
7
+ sidebarEntryHover,
8
+ sidebarEntryIdle,
9
+ sidebarEntrySelected,
10
+ sidebarEntryShell,
11
+ sidebarQuaternaryIconButton,
12
+ sidebarRowInteractiveHover,
13
+ } from "./sidebar-styles";
14
+
15
+ export type SidebarEntryMenuItem = {
16
+ id: string;
17
+ label: string;
18
+ icon?: ReactNode;
19
+ destructive?: boolean;
20
+ onSelect: () => void;
21
+ };
22
+
23
+ export type SidebarEntryState = "idle" | "hover" | "selected";
24
+
25
+ export type SidebarEntryProps = {
26
+ href: string;
27
+ label: string;
28
+ state?: SidebarEntryState;
29
+ icon?: ReactNode;
30
+ badge?: ReactNode;
31
+ menuItems?: SidebarEntryMenuItem[];
32
+ forceMenuVisible?: boolean;
33
+ className?: string;
34
+ onNavigate?: (event: MouseEvent<HTMLAnchorElement>) => void;
35
+ };
36
+
37
+ const stateStyles: Record<SidebarEntryState, string> = {
38
+ idle: sidebarEntryIdle,
39
+ hover: sidebarEntryHover,
40
+ selected: sidebarEntrySelected,
41
+ };
42
+
43
+ export const SidebarEntry = ({
44
+ href,
45
+ label,
46
+ state = "idle",
47
+ icon,
48
+ badge,
49
+ menuItems,
50
+ forceMenuVisible = false,
51
+ className,
52
+ onNavigate,
53
+ }: SidebarEntryProps) => {
54
+ const [menuOpen, setMenuOpen] = useState(false);
55
+ const showMenu = Boolean(menuItems?.length);
56
+ const menuVisible = forceMenuVisible || menuOpen;
57
+
58
+ return (
59
+ <div
60
+ className={cn(
61
+ "group/row relative w-full",
62
+ sidebarEntryShell,
63
+ stateStyles[state],
64
+ state === "idle" && sidebarRowInteractiveHover,
65
+ className,
66
+ )}
67
+ data-state={state}
68
+ >
69
+ <a
70
+ href={href}
71
+ className={sidebarAnchorClass("gap-1")}
72
+ aria-current={state === "selected" ? "true" : undefined}
73
+ onClick={onNavigate}
74
+ >
75
+ {icon && <span className="shrink-0 px-1 py-0.5 [&>svg]:size-4">{icon}</span>}
76
+ <span className="truncate">{label}</span>
77
+ </a>
78
+
79
+ {badge && !(showMenu && menuVisible) && (
80
+ <span
81
+ className={cn("shrink-0", showMenu && !forceMenuVisible && "group-hover/row:hidden")}
82
+ >
83
+ {badge}
84
+ </span>
85
+ )}
86
+
87
+ {showMenu && (
88
+ <DropdownMenu
89
+ open={menuOpen}
90
+ onOpenChange={setMenuOpen}
91
+ align="end"
92
+ trigger={
93
+ <IconButton
94
+ hierarchy="quaternary"
95
+ size="small"
96
+ aria-label={`Actions for ${label}`}
97
+ aria-haspopup="menu"
98
+ aria-expanded={menuOpen}
99
+ className={cn(
100
+ "size-6 min-h-6 shrink-0 p-1",
101
+ sidebarQuaternaryIconButton,
102
+ !forceMenuVisible && !menuOpen && "hidden group-hover/row:inline-flex",
103
+ (forceMenuVisible || menuOpen) && "inline-flex",
104
+ )}
105
+ >
106
+ <MoreIcon size="small" />
107
+ </IconButton>
108
+ }
109
+ >
110
+ {menuItems?.map((item) => (
111
+ <DropdownMenuItem
112
+ key={item.id}
113
+ className={cn(item.destructive && "text-red-500 hover:bg-red-50 hover:text-red-700")}
114
+ onSelect={() => item.onSelect()}
115
+ >
116
+ {item.icon && <span className="shrink-0 [&>svg]:size-4">{item.icon}</span>}
117
+ {item.label}
118
+ </DropdownMenuItem>
119
+ ))}
120
+ </DropdownMenu>
121
+ )}
122
+ </div>
123
+ );
124
+ };
125
+
126
+ /** @deprecated Use SidebarEntry */
127
+ export const Entry = SidebarEntry;
128
+ export type EntryProps = SidebarEntryProps;
129
+ export type EntryState = SidebarEntryState;
@@ -0,0 +1,38 @@
1
+ import { ChevronIcon } from "../../icons";
2
+ import { cn } from "../../utils/cn";
3
+ import { sidebarRowInteractiveHover, sidebarSurfaceHover } from "./sidebar-styles";
4
+
5
+ export type SidebarHeadingProps = {
6
+ title: string;
7
+ /** Figma Collapsed=On — section label with trailing chevron */
8
+ collapsed?: boolean;
9
+ state?: "idle" | "hover";
10
+ className?: string;
11
+ };
12
+
13
+ export const SidebarHeading = ({
14
+ title,
15
+ collapsed = false,
16
+ state = "idle",
17
+ className,
18
+ }: SidebarHeadingProps) => (
19
+ <div
20
+ className={cn(
21
+ "flex w-full items-center justify-between rounded-control px-2 py-1",
22
+ state === "hover" && sidebarSurfaceHover,
23
+ state === "idle" && sidebarRowInteractiveHover,
24
+ className,
25
+ )}
26
+ data-collapsed={collapsed}
27
+ data-state={state}
28
+ >
29
+ <span className="truncate text-caption-2 text-display-on-light-secondary">{title}</span>
30
+ {collapsed && (
31
+ <ChevronIcon direction="right" className="size-4 shrink-0 text-display-on-light-primary" />
32
+ )}
33
+ </div>
34
+ );
35
+
36
+ /** @deprecated Use SidebarHeading */
37
+ export const Heading = SidebarHeading;
38
+ export type HeadingProps = SidebarHeadingProps;
@@ -0,0 +1,125 @@
1
+ import { type MouseEvent, type ReactNode } from "react";
2
+ import { Tooltip } from "../../primitives";
3
+ import { cn } from "../../utils/cn";
4
+ import {
5
+ sidebarLinkActive,
6
+ sidebarLinkHover,
7
+ sidebarLinkIdle,
8
+ sidebarRowInteractiveHover,
9
+ sidebarSectionContent,
10
+ sidebarSectionIconClass,
11
+ sidebarSectionLabelClass,
12
+ sidebarSectionShell,
13
+ sidebarSectionShellCollapsed,
14
+ sidebarSectionShellTall,
15
+ sidebarUnreadDot,
16
+ sidebarUnreadOverlay,
17
+ } from "./sidebar-styles";
18
+
19
+ export type SidebarLinkState = "idle" | "hover" | "active";
20
+
21
+ export type SidebarLinkProps = {
22
+ href: string;
23
+ label: string;
24
+ icon?: ReactNode;
25
+ state?: SidebarLinkState;
26
+ collapsed?: boolean;
27
+ tall?: boolean;
28
+ badge?: ReactNode;
29
+ trailing?: ReactNode;
30
+ tooltip?: string;
31
+ presentation?: boolean;
32
+ unread?: boolean;
33
+ className?: string;
34
+ onNavigate?: (event: MouseEvent<HTMLAnchorElement>) => void;
35
+ };
36
+
37
+ const stateStyles: Record<SidebarLinkState, string> = {
38
+ idle: sidebarLinkIdle,
39
+ hover: sidebarLinkHover,
40
+ active: sidebarLinkActive,
41
+ };
42
+
43
+ export const SidebarLink = ({
44
+ href,
45
+ label,
46
+ icon,
47
+ state = "idle",
48
+ collapsed = false,
49
+ tall = false,
50
+ badge,
51
+ trailing,
52
+ tooltip,
53
+ presentation = false,
54
+ unread = false,
55
+ className,
56
+ onNavigate,
57
+ }: SidebarLinkProps) => {
58
+ const row = collapsed ? (
59
+ <div
60
+ className={cn(
61
+ sidebarSectionShellCollapsed,
62
+ stateStyles[state],
63
+ state === "idle" && sidebarRowInteractiveHover,
64
+ className,
65
+ )}
66
+ data-state={state}
67
+ data-collapsed={collapsed}
68
+ >
69
+ <a
70
+ href={href}
71
+ className="flex w-full items-center justify-center"
72
+ aria-current={state === "active" ? "page" : undefined}
73
+ aria-label={label}
74
+ onClick={onNavigate}
75
+ >
76
+ <span className="relative inline-flex shrink-0 items-center">
77
+ {icon && <span className={sidebarSectionIconClass}>{icon}</span>}
78
+ {unread && (
79
+ <span aria-hidden className={sidebarUnreadOverlay}>
80
+ <span className={sidebarUnreadDot} />
81
+ </span>
82
+ )}
83
+ </span>
84
+ </a>
85
+ </div>
86
+ ) : (
87
+ <div
88
+ className={cn(
89
+ tall ? sidebarSectionShellTall : sidebarSectionShell,
90
+ stateStyles[state],
91
+ state === "idle" && sidebarRowInteractiveHover,
92
+ className,
93
+ )}
94
+ data-state={state}
95
+ data-collapsed={collapsed}
96
+ >
97
+ <div className={sidebarSectionContent}>
98
+ <a
99
+ href={href}
100
+ className="flex min-w-0 flex-1 items-center gap-2 truncate text-left"
101
+ aria-current={state === "active" ? "page" : undefined}
102
+ onClick={onNavigate}
103
+ >
104
+ {icon && <span className={sidebarSectionIconClass}>{icon}</span>}
105
+ <span className={sidebarSectionLabelClass}>{label}</span>
106
+ {badge}
107
+ </a>
108
+ {trailing}
109
+ </div>
110
+ </div>
111
+ );
112
+
113
+ if (presentation || !collapsed || !tooltip) return row;
114
+
115
+ return (
116
+ <Tooltip content={tooltip ?? label} side="right" className="w-full">
117
+ {row}
118
+ </Tooltip>
119
+ );
120
+ };
121
+
122
+ /** @deprecated Use SidebarLink */
123
+ export const Section = SidebarLink;
124
+ export type SectionProps = SidebarLinkProps;
125
+ export type SectionState = SidebarLinkState;
@@ -0,0 +1,32 @@
1
+ import { type ReactNode } from "react";
2
+ import { cn } from "../../utils/cn";
3
+
4
+ export type SidebarShellProps = {
5
+ sidebar: ReactNode;
6
+ children: ReactNode;
7
+ /** Pixels subtracted from viewport height (e.g. app banner). */
8
+ bannerOffset?: number;
9
+ className?: string;
10
+ mainClassName?: string;
11
+ };
12
+
13
+ /** Viewport-height app shell: sidebar stays put, main scrolls independently. */
14
+ export const SidebarShell = ({
15
+ sidebar,
16
+ children,
17
+ bannerOffset = 0,
18
+ className,
19
+ mainClassName,
20
+ }: SidebarShellProps) => (
21
+ <div
22
+ className={cn("flex overflow-hidden bg-background-primary", className)}
23
+ style={{
24
+ height: bannerOffset > 0 ? `calc(100dvh - ${bannerOffset}px)` : "100dvh",
25
+ }}
26
+ >
27
+ {sidebar}
28
+ <main className={cn("min-h-0 min-w-0 flex-1 overflow-auto", mainClassName)}>
29
+ {children}
30
+ </main>
31
+ </div>
32
+ );
@@ -0,0 +1,116 @@
1
+ import { Logo } from "../../primitives";
2
+ import { cn } from "../../utils/cn";
3
+
4
+ export type Chief = "technical" | "compliance";
5
+
6
+ export type SwitcherProps = {
7
+ chief: Chief;
8
+ expanded?: boolean;
9
+ onChiefChange?: (chief: Chief) => void;
10
+ className?: string;
11
+ };
12
+
13
+ const chiefLabels: Record<Chief, string> = {
14
+ technical: "Technical",
15
+ compliance: "Compliance",
16
+ };
17
+
18
+ const SwitcherTab = ({
19
+ tabChief,
20
+ active,
21
+ onSelect,
22
+ }: {
23
+ tabChief: Chief;
24
+ active: boolean;
25
+ onSelect?: (chief: Chief) => void;
26
+ }) => {
27
+ const tabClassName = cn(
28
+ "box-border flex h-[34px] flex-1 items-center gap-[2px] rounded-[4px] py-2 pl-[14px] pr-4",
29
+ active
30
+ ? "bg-background-primary text-display-on-light-primary shadow-[0_1px_1px_rgba(0,0,0,0.06)]"
31
+ : "text-display-on-light-quaternary",
32
+ onSelect && !active && "cursor-pointer hover:text-display-on-light-secondary",
33
+ );
34
+
35
+ const content = (
36
+ <>
37
+ <div
38
+ className={cn(
39
+ "flex size-[18px] shrink-0 items-center justify-center rounded-full",
40
+ active && "bg-background-primary",
41
+ )}
42
+ >
43
+ <Logo chief={tabChief} muted={!active} className="size-[18px]" />
44
+ </div>
45
+ <span
46
+ className={cn(
47
+ "truncate text-[11px] uppercase leading-4 tracking-normal",
48
+ active ? "text-display-on-light-primary" : "text-display-on-light-quaternary",
49
+ )}
50
+ >
51
+ {chiefLabels[tabChief]}
52
+ </span>
53
+ </>
54
+ );
55
+
56
+ if (!onSelect) {
57
+ return (
58
+ <div className={tabClassName} data-active={active}>
59
+ {content}
60
+ </div>
61
+ );
62
+ }
63
+
64
+ return (
65
+ <button
66
+ type="button"
67
+ className={tabClassName}
68
+ data-active={active}
69
+ aria-pressed={active}
70
+ aria-label={`Switch to ${chiefLabels[tabChief]}`}
71
+ disabled={active}
72
+ onClick={() => onSelect(tabChief)}
73
+ >
74
+ {content}
75
+ </button>
76
+ );
77
+ };
78
+
79
+ export const Switcher = ({
80
+ chief,
81
+ expanded = true,
82
+ onChiefChange,
83
+ className,
84
+ }: SwitcherProps) => {
85
+ if (!expanded) {
86
+ return (
87
+ <div
88
+ className={cn(
89
+ "flex h-8 w-10 shrink-0 items-center justify-center self-center rounded-control",
90
+ className,
91
+ )}
92
+ data-expanded={expanded}
93
+ data-chief={chief}
94
+ aria-label={`Switch chief: ${chiefLabels[chief]}`}
95
+ >
96
+ <Logo chief={chief} className="size-6 shrink-0" />
97
+ </div>
98
+ );
99
+ }
100
+
101
+ return (
102
+ <div
103
+ className={cn(
104
+ "box-border flex h-11 w-full gap-1 rounded-control bg-background-secondary p-[5px] shadow-[inset_0_0_0_1px_theme(colors.divider.primary)]",
105
+ className,
106
+ )}
107
+ data-expanded={expanded}
108
+ data-chief={chief}
109
+ role="group"
110
+ aria-label="Chief switcher"
111
+ >
112
+ <SwitcherTab tabChief="technical" active={chief === "technical"} onSelect={onChiefChange} />
113
+ <SwitcherTab tabChief="compliance" active={chief === "compliance"} onSelect={onChiefChange} />
114
+ </div>
115
+ );
116
+ };
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="Logo">
3
+ <path id="Glyph" d="M9.89258 5.62793L13.2041 14.625H11.9316L9.20117 11.8926H9.03223L6.29785 14.623C6.29785 14.623 6.29573 14.6211 6.29395 14.6211V14.625H5.0625L8.38867 5.62793H9.89258ZM9.01172 7.12305L7.16016 12.2334L8.87109 10.5234H9.36133L11.0762 12.2402L9.23828 7.12305H9.01172ZM12.6904 3.375V4.64355H5.61328V3.375H12.6904Z" fill="var(--fill-0, #262420)"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,13 @@
1
+ <svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="Mask" clip-path="url(#clip0_0_4)">
3
+ <g id="icon-compliance.svg">
4
+ <path id="Vector" d="M8.30333 5.84667L5.18333 14.2917H6.33833V14.2883C6.34 14.2883 6.34167 14.29 6.34167 14.29L8.90667 11.7267H9.06667L11.6283 14.2917H12.8233L9.71667 5.84667H8.305H8.30333ZM9.215 10.4433H8.75667L7.15167 12.0483L8.89 7.25167H9.10167L10.825 12.055L9.21667 10.4433H9.215Z" fill="var(--fill-0, #232323)"/>
5
+ <path id="Vector_2" d="M8.98833 4.85833C9.87167 4.85833 10.6817 5.23 11.3117 5.84667H12.7967C11.925 4.54667 10.5433 3.70667 8.98833 3.70667C7.43333 3.70667 6.05167 4.54667 5.18 5.84667H6.665C7.29333 5.23 8.105 4.85833 8.98833 4.85833Z" fill="var(--fill-0, #232323)"/>
6
+ </g>
7
+ </g>
8
+ <defs>
9
+ <clipPath id="clip0_0_4">
10
+ <rect width="18" height="18" fill="white"/>
11
+ </clipPath>
12
+ </defs>
13
+ </svg>
@@ -0,0 +1,17 @@
1
+ <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="18" height="18" fill="#F5F5F5"/>
3
+ <g id="Core">
4
+ <path d="M-330 -683C-330 -694.046 -321.046 -703 -310 -703H382C393.046 -703 402 -694.046 402 -683V927C402 938.046 393.046 947 382 947H-310C-321.046 947 -330 938.046 -330 927V-683Z" fill="#FDFDFC"/>
5
+ <g id="Content">
6
+ <g id="Avatar">
7
+ <rect x="-273.5" y="-30.5" width="619" height="79" rx="4.5" stroke="#9747FF" stroke-dasharray="10 5"/>
8
+ <g id="Chief=Technical, Size=18">
9
+ <path d="M0 9C0 4.02944 4.02944 0 9 0C13.9706 0 18 4.02944 18 9C18 13.9706 13.9706 18 9 18C4.02944 18 0 13.9706 0 9Z" fill="#FDFDFC"/>
10
+ <g id="Logo">
11
+ <path id="Glyph" d="M9.89258 5.62793L13.2041 14.625H11.9316L9.20117 11.8926H9.03223L6.29785 14.623C6.29785 14.623 6.29573 14.6211 6.29395 14.6211V14.625H5.0625L8.38867 5.62793H9.89258ZM9.01172 7.12305L7.16016 12.2334L8.87109 10.5234H9.36133L11.0762 12.2402L9.23828 7.12305H9.01172ZM12.6904 3.375V4.64355H5.61328V3.375H12.6904Z" fill="#262420"/>
12
+ </g>
13
+ </g>
14
+ </g>
15
+ </g>
16
+ </g>
17
+ </svg>
@@ -0,0 +1,17 @@
1
+ <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="18" height="18" fill="#F5F5F5"/>
3
+ <g id="Core">
4
+ <path d="M-330 -683C-330 -694.046 -321.046 -703 -310 -703H382C393.046 -703 402 -694.046 402 -683V927C402 938.046 393.046 947 382 947H-310C-321.046 947 -330 938.046 -330 927V-683Z" fill="#FDFDFC"/>
5
+ <g id="Content">
6
+ <g id="Avatar">
7
+ <rect x="-273.5" y="-30.5" width="619" height="79" rx="4.5" stroke="#9747FF" stroke-dasharray="10 5"/>
8
+ <g id="Chief=Technical, Size=18">
9
+ <path d="M0 9C0 4.02944 4.02944 0 9 0C13.9706 0 18 4.02944 18 9C18 13.9706 13.9706 18 9 18C4.02944 18 0 13.9706 0 9Z" fill="#FDFDFC"/>
10
+ <g id="Logo">
11
+ <path id="Glyph" d="M9.89258 5.62793L13.2041 14.625H11.9316L9.20117 11.8926H9.03223L6.29785 14.623C6.29785 14.623 6.29573 14.6211 6.29395 14.6211V14.625H5.0625L8.38867 5.62793H9.89258ZM9.01172 7.12305L7.16016 12.2334L8.87109 10.5234H9.36133L11.0762 12.2402L9.23828 7.12305H9.01172ZM12.6904 3.375V4.64355H5.61328V3.375H12.6904Z" fill="#262420"/>
12
+ </g>
13
+ </g>
14
+ </g>
15
+ </g>
16
+ </g>
17
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="Logo">
3
+ <path id="Glyph" d="M9.89258 5.62793L13.2041 14.625H11.9316L9.20117 11.8926H9.03223L6.29785 14.623C6.29785 14.623 6.29573 14.6211 6.29395 14.6211V14.625H5.0625L8.38867 5.62793H9.89258ZM9.01172 7.12305L7.16016 12.2334L8.87109 10.5234H9.36133L11.0762 12.2402L9.23828 7.12305H9.01172ZM12.6904 3.375V4.64355H5.61328V3.375H12.6904Z" fill="var(--fill-0, #262420)"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,16 @@
1
+ <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="18" height="18" fill="#F5F5F5"/>
3
+ <g id="Core">
4
+ <path d="M-330 -683C-330 -694.046 -321.046 -703 -310 -703H382C393.046 -703 402 -694.046 402 -683V927C402 938.046 393.046 947 382 947H-310C-321.046 947 -330 938.046 -330 927V-683Z" fill="white"/>
5
+ <g id="Content">
6
+ <g id="Avatar">
7
+ <rect x="-273.5" y="-30.5" width="619" height="79" rx="4.5" stroke="#9747FF" stroke-dasharray="10 5"/>
8
+ <g id="Chief=Technical, Size=18">
9
+ <g id="Logo">
10
+ <path id="Glyph" d="M9.89258 5.62793L13.2041 14.625H11.9316L9.20117 11.8926H9.03223L6.29785 14.623C6.29785 14.623 6.29573 14.6211 6.29395 14.6211V14.625H5.0625L8.38867 5.62793H9.89258ZM9.01172 7.12305L7.16016 12.2334L8.87109 10.5234H9.36133L11.0762 12.2402L9.23828 7.12305H9.01172ZM12.6904 3.375V4.64355H5.61328V3.375H12.6904Z" fill="#262420"/>
11
+ </g>
12
+ </g>
13
+ </g>
14
+ </g>
15
+ </g>
16
+ </svg>
@@ -0,0 +1,2 @@
1
+ export const SIDEBAR_EXPANDED_WIDTH = 280;
2
+ export const SIDEBAR_COLLAPSED_WIDTH = 56;
@@ -0,0 +1,4 @@
1
+ import accountAvatar from "./assets/account-avatar.jpg";
2
+ import accountAvatar24 from "./assets/account-avatar-24.jpg";
3
+
4
+ export { accountAvatar, accountAvatar24 };
@@ -0,0 +1,30 @@
1
+ export type FigmaActivityIcon = "status" | "statusClosed" | "chat" | "chatPro";
2
+
3
+ export const FIGMA_ACTIVITY_ENTRIES = [
4
+ { id: "1", label: "Winch Slipping Under Load", href: "#chat-1", count: 1, icon: "status" as const },
5
+ { id: "2", label: "Excessive Vibration Propeller Shaft", href: "#chat-2", icon: "chatPro" as const },
6
+ { id: "3", label: "Winch Slipping Under Load", href: "#chat-3", icon: "chat" as const },
7
+ { id: "4", label: "Freshwater Pressure Drop Causes", href: "#chat-4", icon: "chat" as const },
8
+ { id: "5", label: "Excessive Vibration Propeller Shaft", href: "#chat-5", icon: "status" as const },
9
+ { id: "6", label: "Freshwater Pressure Drop Causes", href: "#chat-6", icon: "statusClosed" as const },
10
+ { id: "7", label: "Rust Prevention On Deck Fittings", href: "#chat-7", icon: "chatPro" as const },
11
+ { id: "8", label: "Persistent Engine Room Oil Leak", href: "#chat-8", icon: "chat" as const },
12
+ ] as const;
13
+
14
+ export const FIGMA_SHIP_ENTRIES = [
15
+ { id: "1", name: "The Coral Explorer", href: "#ship-1", count: 3 },
16
+ { id: "2", name: "Silver Wave", href: "#ship-2", count: 1 },
17
+ { id: "3", name: "Ocean Voyager", href: "#ship-3" },
18
+ { id: "4", name: "Albatross Wind", href: "#ship-4" },
19
+ ] as const;
20
+
21
+ export const FIGMA_ACCOUNT_NAME = "Panos Tsamoudakis";
22
+
23
+ export const FIGMA_SECTION_LABEL = "Name";
24
+ export const FIGMA_HEADING_LABEL = "Label";
25
+ export const FIGMA_ENTRY_LABEL = "New chat";
26
+
27
+ export const DEMO_SIDEBAR_ENTRY_MENU_ITEMS = [
28
+ { id: "example-1", label: "Example one", onSelect: () => undefined },
29
+ { id: "example-2", label: "Example two", onSelect: () => undefined },
30
+ ] as const;
@@ -0,0 +1,79 @@
1
+ import type { Chief } from "./Switcher";
2
+
3
+ export type FigmaNavItemId =
4
+ | "search"
5
+ | "workflows"
6
+ | "analytics"
7
+ | "forms"
8
+ | "ships"
9
+ | "defectReports"
10
+ | "tasks"
11
+ | "knowledge"
12
+ | "activity";
13
+
14
+ export type FigmaCollapsedNavItem = {
15
+ id: FigmaNavItemId;
16
+ unread?: boolean;
17
+ };
18
+
19
+ export type FigmaSidebarNavConfig = {
20
+ expandedItems: FigmaNavItemId[];
21
+ collapsedItems: FigmaCollapsedNavItem[];
22
+ };
23
+
24
+ const technicalExpanded: FigmaNavItemId[] = [
25
+ "search",
26
+ "workflows",
27
+ "analytics",
28
+ "ships",
29
+ "defectReports",
30
+ "knowledge",
31
+ "activity",
32
+ ];
33
+
34
+ const complianceExpanded: FigmaNavItemId[] = [
35
+ "search",
36
+ "workflows",
37
+ "forms",
38
+ "ships",
39
+ "tasks",
40
+ "knowledge",
41
+ "analytics",
42
+ "activity",
43
+ ];
44
+
45
+ const technicalCollapsed: FigmaCollapsedNavItem[] = [
46
+ { id: "search" },
47
+ { id: "workflows" },
48
+ { id: "analytics" },
49
+ { id: "ships", unread: true },
50
+ { id: "defectReports" },
51
+ { id: "activity", unread: true },
52
+ ];
53
+
54
+ const complianceCollapsed: FigmaCollapsedNavItem[] = [
55
+ { id: "search" },
56
+ { id: "workflows", unread: true },
57
+ { id: "ships" },
58
+ { id: "tasks" },
59
+ { id: "knowledge" },
60
+ { id: "analytics" },
61
+ { id: "activity", unread: true },
62
+ ];
63
+
64
+ export const FIGMA_NAV_LABELS: Record<FigmaNavItemId, string> = {
65
+ search: "Search",
66
+ workflows: "Workflows",
67
+ analytics: "Analytics",
68
+ forms: "Forms",
69
+ ships: "Ships",
70
+ defectReports: "Defect Reports",
71
+ tasks: "Tasks",
72
+ knowledge: "Knowledge",
73
+ activity: "Activity",
74
+ };
75
+
76
+ export const getFigmaSidebarNav = (chief: Chief): FigmaSidebarNavConfig => ({
77
+ expandedItems: chief === "compliance" ? complianceExpanded : technicalExpanded,
78
+ collapsedItems: chief === "compliance" ? complianceCollapsed : technicalCollapsed,
79
+ });
@@ -0,0 +1,13 @@
1
+ export { Account, type AccountMenuItem, type AccountProps } from "./Account";
2
+ export { ActivityNavGroup, Activity, type ActivityNavGroupProps, type ActivityProps } from "./ActivityNavGroup";
3
+ export { CollapsibleNavGroup, Ships, type CollapsibleNavGroupProps, type Ship, type ShipsProps } from "./CollapsibleNavGroup";
4
+ export { SIDEBAR_COLLAPSED_WIDTH, SIDEBAR_EXPANDED_WIDTH } from "./constants";
5
+ export { Entry, SidebarEntry, type EntryProps, type EntryState, type SidebarEntryMenuItem, type SidebarEntryProps, type SidebarEntryState } from "./SidebarEntry";
6
+ export { Heading, SidebarHeading, type HeadingProps, type SidebarHeadingProps } from "./SidebarHeading";
7
+ export { Indicator, type IndicatorProps } from "./Indicator";
8
+ export { NewChat, type NewChatProps } from "./NewChat";
9
+ export { Section, SidebarLink, type SectionProps, type SectionState, type SidebarLinkProps, type SidebarLinkState } from "./SidebarLink";
10
+ export { SidebarAction, type SidebarActionProps } from "./SidebarAction";
11
+ export { Sidebar, type SidebarProps } from "./Sidebar";
12
+ export { SidebarShell, type SidebarShellProps } from "./SidebarShell";
13
+ export { Switcher, type Chief, type SwitcherProps } from "./Switcher";