@fortanix/baklava 1.0.0-beta-20241114

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 (454) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/LICENSE +373 -0
  3. package/README.md +43 -0
  4. package/app/Demo.tsx +33 -0
  5. package/app/index.html +12 -0
  6. package/app/lib.ts +54 -0
  7. package/app/main.tsx +32 -0
  8. package/dist/baklava.d.ts +752 -0
  9. package/dist/baklava.js +4962 -0
  10. package/dist/lib.css +1 -0
  11. package/package.json +102 -0
  12. package/src/assets/fonts/montserrat/montserrat-v25-latin_latin-ext-100.woff2 +0 -0
  13. package/src/assets/fonts/montserrat/montserrat-v25-latin_latin-ext-200.woff2 +0 -0
  14. package/src/assets/fonts/montserrat/montserrat-v25-latin_latin-ext-300.woff2 +0 -0
  15. package/src/assets/fonts/montserrat/montserrat-v25-latin_latin-ext-500.woff2 +0 -0
  16. package/src/assets/fonts/montserrat/montserrat-v25-latin_latin-ext-600.woff2 +0 -0
  17. package/src/assets/fonts/montserrat/montserrat-v25-latin_latin-ext-700.woff2 +0 -0
  18. package/src/assets/fonts/montserrat/montserrat-v25-latin_latin-ext-regular.woff2 +0 -0
  19. package/src/assets/fonts/open-sans/open-sans-v23-latin-600.woff2 +0 -0
  20. package/src/assets/fonts/open-sans/open-sans-v23-latin-700.woff2 +0 -0
  21. package/src/assets/fonts/open-sans/open-sans-v23-latin-regular.woff2 +0 -0
  22. package/src/assets/fonts/source-code-pro/source-code-pro-v14-latin-regular.woff2 +0 -0
  23. package/src/assets/icons/_icons.ts +58 -0
  24. package/src/assets/icons/accounts.svg +11 -0
  25. package/src/assets/icons/alert.svg +3 -0
  26. package/src/assets/icons/apache.svg +3 -0
  27. package/src/assets/icons/apps.svg +5 -0
  28. package/src/assets/icons/assessment.svg +11 -0
  29. package/src/assets/icons/audit-log.svg +12 -0
  30. package/src/assets/icons/authentication.svg +12 -0
  31. package/src/assets/icons/calendar.svg +10 -0
  32. package/src/assets/icons/caret-down.svg +3 -0
  33. package/src/assets/icons/check.svg +3 -0
  34. package/src/assets/icons/cloud-accounts.svg +15 -0
  35. package/src/assets/icons/copy.svg +4 -0
  36. package/src/assets/icons/cross.svg +4 -0
  37. package/src/assets/icons/dashboard.svg +12 -0
  38. package/src/assets/icons/dataverse.svg +12 -0
  39. package/src/assets/icons/delete.svg +5 -0
  40. package/src/assets/icons/docs.svg +10 -0
  41. package/src/assets/icons/download.svg +11 -0
  42. package/src/assets/icons/edit-params.svg +3 -0
  43. package/src/assets/icons/edit.svg +10 -0
  44. package/src/assets/icons/email.svg +3 -0
  45. package/src/assets/icons/eye.svg +11 -0
  46. package/src/assets/icons/file-error.svg +17 -0
  47. package/src/assets/icons/file.svg +15 -0
  48. package/src/assets/icons/folder.svg +14 -0
  49. package/src/assets/icons/fortanix-ki.svg +13 -0
  50. package/src/assets/icons/graph.svg +9 -0
  51. package/src/assets/icons/groups.svg +10 -0
  52. package/src/assets/icons/hide.svg +3 -0
  53. package/src/assets/icons/home.svg +11 -0
  54. package/src/assets/icons/iam.svg +11 -0
  55. package/src/assets/icons/info.svg +4 -0
  56. package/src/assets/icons/infrastructure.svg +5 -0
  57. package/src/assets/icons/integrations.svg +3 -0
  58. package/src/assets/icons/key-link.svg +12 -0
  59. package/src/assets/icons/key.svg +4 -0
  60. package/src/assets/icons/no-login.svg +10 -0
  61. package/src/assets/icons/page-forward.svg +4 -0
  62. package/src/assets/icons/plugins.svg +4 -0
  63. package/src/assets/icons/policy.svg +13 -0
  64. package/src/assets/icons/print.svg +11 -0
  65. package/src/assets/icons/scripts.svg +4 -0
  66. package/src/assets/icons/search.svg +3 -0
  67. package/src/assets/icons/security-object.svg +5 -0
  68. package/src/assets/icons/services.svg +10 -0
  69. package/src/assets/icons/settings.svg +12 -0
  70. package/src/assets/icons/solutions.svg +3 -0
  71. package/src/assets/icons/success.svg +3 -0
  72. package/src/assets/icons/tasks.svg +10 -0
  73. package/src/assets/icons/user-profile.svg +3 -0
  74. package/src/assets/icons/user.svg +10 -0
  75. package/src/assets/icons/warning.svg +3 -0
  76. package/src/assets/icons/workflows.svg +11 -0
  77. package/src/assets/icons_new/Accounts.svg +11 -0
  78. package/src/assets/icons_new/Alert.svg +3 -0
  79. package/src/assets/icons_new/Apache.svg +3 -0
  80. package/src/assets/icons_new/Apps.svg +5 -0
  81. package/src/assets/icons_new/Assessment.svg +11 -0
  82. package/src/assets/icons_new/Audit Log.svg +12 -0
  83. package/src/assets/icons_new/Authentication.svg +12 -0
  84. package/src/assets/icons_new/Calendar.svg +10 -0
  85. package/src/assets/icons_new/Carrot Down.svg +3 -0
  86. package/src/assets/icons_new/Cloud Accounts.svg +15 -0
  87. package/src/assets/icons_new/Copy.svg +4 -0
  88. package/src/assets/icons_new/Dashboard.svg +12 -0
  89. package/src/assets/icons_new/Dataverse.svg +12 -0
  90. package/src/assets/icons_new/Delete.svg +5 -0
  91. package/src/assets/icons_new/Docs.svg +10 -0
  92. package/src/assets/icons_new/Download.svg +11 -0
  93. package/src/assets/icons_new/Edit Params.svg +3 -0
  94. package/src/assets/icons_new/Edit.svg +10 -0
  95. package/src/assets/icons_new/Email.svg +3 -0
  96. package/src/assets/icons_new/Eye.svg +11 -0
  97. package/src/assets/icons_new/Groups.svg +10 -0
  98. package/src/assets/icons_new/Hide.svg +3 -0
  99. package/src/assets/icons_new/Home.svg +11 -0
  100. package/src/assets/icons_new/IAM.svg +11 -0
  101. package/src/assets/icons_new/Info.svg +4 -0
  102. package/src/assets/icons_new/Infrastructure.svg +5 -0
  103. package/src/assets/icons_new/Integrations.svg +3 -0
  104. package/src/assets/icons_new/KI.svg +13 -0
  105. package/src/assets/icons_new/Key Link.svg +12 -0
  106. package/src/assets/icons_new/Key.svg +4 -0
  107. package/src/assets/icons_new/No Login.svg +10 -0
  108. package/src/assets/icons_new/Page FWD.svg +4 -0
  109. package/src/assets/icons_new/Plugins.svg +4 -0
  110. package/src/assets/icons_new/Policy.svg +13 -0
  111. package/src/assets/icons_new/Print.svg +11 -0
  112. package/src/assets/icons_new/Scripts.svg +4 -0
  113. package/src/assets/icons_new/Search.svg +3 -0
  114. package/src/assets/icons_new/Security Objects.svg +5 -0
  115. package/src/assets/icons_new/Services.svg +10 -0
  116. package/src/assets/icons_new/Settings.svg +12 -0
  117. package/src/assets/icons_new/Solutions.svg +3 -0
  118. package/src/assets/icons_new/Tasks.svg +10 -0
  119. package/src/assets/icons_new/User Account.svg +3 -0
  120. package/src/assets/icons_new/Users.svg +10 -0
  121. package/src/assets/icons_new/Workflows.svg +11 -0
  122. package/src/assets/icons_old/_icons.ts +172 -0
  123. package/src/assets/icons_old/account.svg +4 -0
  124. package/src/assets/icons_old/accounts.svg +4 -0
  125. package/src/assets/icons_old/add.svg +4 -0
  126. package/src/assets/icons_old/alert.svg +4 -0
  127. package/src/assets/icons_old/app.svg +4 -0
  128. package/src/assets/icons_old/arrow-drop-down.svg +4 -0
  129. package/src/assets/icons_old/arrow-drop-up.svg +4 -0
  130. package/src/assets/icons_old/arrow-expand.svg +4 -0
  131. package/src/assets/icons_old/arrow-left.svg +5 -0
  132. package/src/assets/icons_old/arrow-right.svg +4 -0
  133. package/src/assets/icons_old/audit-log.svg +4 -0
  134. package/src/assets/icons_old/bell.svg +4 -0
  135. package/src/assets/icons_old/billing.svg +4 -0
  136. package/src/assets/icons_old/bug.svg +4 -0
  137. package/src/assets/icons_old/builds.svg +4 -0
  138. package/src/assets/icons_old/calendar.svg +4 -0
  139. package/src/assets/icons_old/certificate.svg +4 -0
  140. package/src/assets/icons_old/check.svg +4 -0
  141. package/src/assets/icons_old/checkbox-checked.svg +4 -0
  142. package/src/assets/icons_old/checkbox-disabled.svg +4 -0
  143. package/src/assets/icons_old/checkbox-unchecked.svg +4 -0
  144. package/src/assets/icons_old/chevron-left.svg +4 -0
  145. package/src/assets/icons_old/chevron-right.svg +4 -0
  146. package/src/assets/icons_old/clear-all.svg +4 -0
  147. package/src/assets/icons_old/color-picker.svg +10 -0
  148. package/src/assets/icons_old/connection.svg +4 -0
  149. package/src/assets/icons_old/copy.svg +4 -0
  150. package/src/assets/icons_old/cross-thin.svg +4 -0
  151. package/src/assets/icons_old/cross.svg +4 -0
  152. package/src/assets/icons_old/crypto-policy.svg +4 -0
  153. package/src/assets/icons_old/customers.svg +4 -0
  154. package/src/assets/icons_old/dashboard.svg +4 -0
  155. package/src/assets/icons_old/data-center.svg +4 -0
  156. package/src/assets/icons_old/data-connector-read.svg +6 -0
  157. package/src/assets/icons_old/data-connector-write.svg +6 -0
  158. package/src/assets/icons_old/dataset.svg +3 -0
  159. package/src/assets/icons_old/dataverse.svg +6 -0
  160. package/src/assets/icons_old/delete.svg +4 -0
  161. package/src/assets/icons_old/deployment-deployed.svg +4 -0
  162. package/src/assets/icons_old/deployment-none.svg +4 -0
  163. package/src/assets/icons_old/derive.svg +4 -0
  164. package/src/assets/icons_old/docs.svg +4 -0
  165. package/src/assets/icons_old/document-blank.svg +4 -0
  166. package/src/assets/icons_old/domain.svg +4 -0
  167. package/src/assets/icons_old/download-cloud.svg +4 -0
  168. package/src/assets/icons_old/download.svg +4 -0
  169. package/src/assets/icons_old/edit-params.svg +4 -0
  170. package/src/assets/icons_old/edit.svg +4 -0
  171. package/src/assets/icons_old/em-app.svg +4 -0
  172. package/src/assets/icons_old/em-dashboard.svg +4 -0
  173. package/src/assets/icons_old/email.svg +4 -0
  174. package/src/assets/icons_old/empty-credential.svg +4 -0
  175. package/src/assets/icons_old/enterprise-badge.svg +6 -0
  176. package/src/assets/icons_old/environment-production.svg +4 -0
  177. package/src/assets/icons_old/environment-test.svg +4 -0
  178. package/src/assets/icons_old/event-critical.svg +4 -0
  179. package/src/assets/icons_old/event-error.svg +4 -0
  180. package/src/assets/icons_old/event-success.svg +4 -0
  181. package/src/assets/icons_old/event-warning.svg +4 -0
  182. package/src/assets/icons_old/expiration.svg +4 -0
  183. package/src/assets/icons_old/export.svg +4 -0
  184. package/src/assets/icons_old/external.svg +4 -0
  185. package/src/assets/icons_old/eye-closed.svg +4 -0
  186. package/src/assets/icons_old/eye.svg +4 -0
  187. package/src/assets/icons_old/file.svg +7 -0
  188. package/src/assets/icons_old/flag.svg +4 -0
  189. package/src/assets/icons_old/forbid.svg +4 -0
  190. package/src/assets/icons_old/fortanix-app-aci.svg +6 -0
  191. package/src/assets/icons_old/fortanix-app-edp.svg +4 -0
  192. package/src/assets/icons_old/fortanix-app-enclave-os.svg +4 -0
  193. package/src/assets/icons_old/frame-expand.svg +4 -0
  194. package/src/assets/icons_old/fresh.svg +4 -0
  195. package/src/assets/icons_old/generated.svg +4 -0
  196. package/src/assets/icons_old/gift.svg +4 -0
  197. package/src/assets/icons_old/global.svg +4 -0
  198. package/src/assets/icons_old/group.svg +4 -0
  199. package/src/assets/icons_old/help.svg +4 -0
  200. package/src/assets/icons_old/home-info.svg +5 -0
  201. package/src/assets/icons_old/home.svg +4 -0
  202. package/src/assets/icons_old/horizontal-collapse.svg +5 -0
  203. package/src/assets/icons_old/horizontal-expand.svg +5 -0
  204. package/src/assets/icons_old/hsm.svg +4 -0
  205. package/src/assets/icons_old/info.svg +4 -0
  206. package/src/assets/icons_old/install.svg +4 -0
  207. package/src/assets/icons_old/integration.svg +7 -0
  208. package/src/assets/icons_old/key-clone.svg +4 -0
  209. package/src/assets/icons_old/key-custodian-policy.svg +10 -0
  210. package/src/assets/icons_old/key-destroy.svg +4 -0
  211. package/src/assets/icons_old/key-download.svg +4 -0
  212. package/src/assets/icons_old/key-justification-policy.svg +5 -0
  213. package/src/assets/icons_old/key-link.svg +4 -0
  214. package/src/assets/icons_old/key-metadata-policy.svg +5 -0
  215. package/src/assets/icons_old/key-primary.svg +11 -0
  216. package/src/assets/icons_old/key-remove.svg +4 -0
  217. package/src/assets/icons_old/key-rotation.svg +4 -0
  218. package/src/assets/icons_old/key-undo-policy.svg +10 -0
  219. package/src/assets/icons_old/key-wrapping.svg +6 -0
  220. package/src/assets/icons_old/key.svg +4 -0
  221. package/src/assets/icons_old/leave-account.svg +4 -0
  222. package/src/assets/icons_old/link.svg +4 -0
  223. package/src/assets/icons_old/lock-closed.svg +4 -0
  224. package/src/assets/icons_old/lock.svg +4 -0
  225. package/src/assets/icons_old/locked-user.svg +4 -0
  226. package/src/assets/icons_old/marketplace.svg +4 -0
  227. package/src/assets/icons_old/minus.svg +4 -0
  228. package/src/assets/icons_old/monitoring.svg +4 -0
  229. package/src/assets/icons_old/no-logging.svg +4 -0
  230. package/src/assets/icons_old/node-cluster.svg +4 -0
  231. package/src/assets/icons_old/node.svg +4 -0
  232. package/src/assets/icons_old/operations.svg +13 -0
  233. package/src/assets/icons_old/options.svg +4 -0
  234. package/src/assets/icons_old/play.svg +4 -0
  235. package/src/assets/icons_old/plug.svg +4 -0
  236. package/src/assets/icons_old/plugin-clone.svg +4 -0
  237. package/src/assets/icons_old/plugin.svg +4 -0
  238. package/src/assets/icons_old/plugins.svg +4 -0
  239. package/src/assets/icons_old/pod.svg +4 -0
  240. package/src/assets/icons_old/print.svg +4 -0
  241. package/src/assets/icons_old/projects.svg +11 -0
  242. package/src/assets/icons_old/python.svg +4 -0
  243. package/src/assets/icons_old/quorum.svg +4 -0
  244. package/src/assets/icons_old/refresh.svg +4 -0
  245. package/src/assets/icons_old/regenerate.svg +4 -0
  246. package/src/assets/icons_old/region.svg +4 -0
  247. package/src/assets/icons_old/reports.svg +3 -0
  248. package/src/assets/icons_old/request-approve.svg +4 -0
  249. package/src/assets/icons_old/request-decline.svg +4 -0
  250. package/src/assets/icons_old/reseller.svg +4 -0
  251. package/src/assets/icons_old/script.svg +7 -0
  252. package/src/assets/icons_old/search.svg +4 -0
  253. package/src/assets/icons_old/service-account.svg +4 -0
  254. package/src/assets/icons_old/settings.svg +4 -0
  255. package/src/assets/icons_old/sidebar-closed.svg +8 -0
  256. package/src/assets/icons_old/sidebar-open.svg +8 -0
  257. package/src/assets/icons_old/sign-out.svg +4 -0
  258. package/src/assets/icons_old/sign.svg +4 -0
  259. package/src/assets/icons_old/software.svg +4 -0
  260. package/src/assets/icons_old/sql-aggregate.svg +7 -0
  261. package/src/assets/icons_old/sql.svg +7 -0
  262. package/src/assets/icons_old/stack.svg +4 -0
  263. package/src/assets/icons_old/star-empty.svg +4 -0
  264. package/src/assets/icons_old/star-fill.svg +4 -0
  265. package/src/assets/icons_old/subscription.svg +5 -0
  266. package/src/assets/icons_old/support.svg +11 -0
  267. package/src/assets/icons_old/switcher.svg +4 -0
  268. package/src/assets/icons_old/sysadmin.svg +4 -0
  269. package/src/assets/icons_old/tag.svg +4 -0
  270. package/src/assets/icons_old/target.svg +4 -0
  271. package/src/assets/icons_old/tasks.svg +4 -0
  272. package/src/assets/icons_old/tfa-user.svg +4 -0
  273. package/src/assets/icons_old/tfa.svg +4 -0
  274. package/src/assets/icons_old/tokenization.svg +4 -0
  275. package/src/assets/icons_old/tools.svg +4 -0
  276. package/src/assets/icons_old/transition-from.svg +4 -0
  277. package/src/assets/icons_old/transition-to.svg +4 -0
  278. package/src/assets/icons_old/upload.svg +4 -0
  279. package/src/assets/icons_old/user-remove.svg +3 -0
  280. package/src/assets/icons_old/user.svg +4 -0
  281. package/src/assets/icons_old/view-type-cards.svg +4 -0
  282. package/src/assets/icons_old/view-type-list.svg +4 -0
  283. package/src/assets/icons_old/view-type-table.svg +4 -0
  284. package/src/assets/icons_old/warning.svg +4 -0
  285. package/src/assets/icons_old/workflow.svg +3 -0
  286. package/src/assets/icons_old/wrap.svg +4 -0
  287. package/src/assets/icons_old/wrench.svg +4 -0
  288. package/src/assets/images/fortanix_logo_icon.svg +20 -0
  289. package/src/components/actions/Button/Button.module.scss +81 -0
  290. package/src/components/actions/Button/Button.stories.tsx +262 -0
  291. package/src/components/actions/Button/Button.tsx +133 -0
  292. package/src/components/actions/ButtonAsLink/ButtonAsLink.module.scss +13 -0
  293. package/src/components/actions/ButtonAsLink/ButtonAsLink.stories.tsx +49 -0
  294. package/src/components/actions/ButtonAsLink/ButtonAsLink.tsx +56 -0
  295. package/src/components/actions/Link/Link.module.scss +38 -0
  296. package/src/components/actions/Link/Link.stories.tsx +54 -0
  297. package/src/components/actions/Link/Link.tsx +59 -0
  298. package/src/components/actions/LinkAsButton/LinkAsButton.stories.tsx +70 -0
  299. package/src/components/actions/LinkAsButton/LinkAsButton.tsx +59 -0
  300. package/src/components/containers/Alert/Alert.module.scss +41 -0
  301. package/src/components/containers/Alert/Alert.stories.tsx +47 -0
  302. package/src/components/containers/Alert/Alert.tsx +65 -0
  303. package/src/components/containers/Banner/Banner.module.scss +100 -0
  304. package/src/components/containers/Banner/Banner.stories.tsx +198 -0
  305. package/src/components/containers/Banner/Banner.tsx +121 -0
  306. package/src/components/containers/Card/Card.module.scss +32 -0
  307. package/src/components/containers/Card/Card.stories.tsx +67 -0
  308. package/src/components/containers/Card/Card.tsx +48 -0
  309. package/src/components/containers/Dialog/Dialog.module.scss +166 -0
  310. package/src/components/containers/Dialog/Dialog.stories.tsx +32 -0
  311. package/src/components/containers/Dialog/Dialog.tsx +130 -0
  312. package/src/components/containers/Panel/Panel.module.scss +32 -0
  313. package/src/components/containers/Panel/Panel.stories.tsx +46 -0
  314. package/src/components/containers/Panel/Panel.tsx +48 -0
  315. package/src/components/forms/context/Form/Form.module.scss +11 -0
  316. package/src/components/forms/context/Form/Form.stories.tsx +99 -0
  317. package/src/components/forms/context/Form/Form.tsx +106 -0
  318. package/src/components/forms/context/Form/FormOptics.tsx +109 -0
  319. package/src/components/forms/context/SubmitButton/SubmitButton.module.scss +9 -0
  320. package/src/components/forms/context/SubmitButton/SubmitButton.stories.tsx +132 -0
  321. package/src/components/forms/context/SubmitButton/SubmitButton.tsx +98 -0
  322. package/src/components/forms/controls/Checkbox/Checkbox.module.scss +67 -0
  323. package/src/components/forms/controls/Checkbox/Checkbox.stories.tsx +119 -0
  324. package/src/components/forms/controls/Checkbox/Checkbox.tsx +53 -0
  325. package/src/components/forms/controls/Input/Input.module.scss +40 -0
  326. package/src/components/forms/controls/Input/Input.stories.tsx +55 -0
  327. package/src/components/forms/controls/Input/Input.tsx +44 -0
  328. package/src/components/forms/controls/SegmentedControl/SegmentedControl.module.scss +76 -0
  329. package/src/components/forms/controls/SegmentedControl/SegmentedControl.stories.tsx +92 -0
  330. package/src/components/forms/controls/SegmentedControl/SegmentedControl.tsx +103 -0
  331. package/src/components/forms/controls/Select/Select.module.scss +105 -0
  332. package/src/components/forms/controls/Select/Select.stories.tsx +43 -0
  333. package/src/components/forms/controls/Select/Select.tsx +166 -0
  334. package/src/components/forms/controls/Switch/Switch.module.scss +63 -0
  335. package/src/components/forms/controls/Switch/Switch.stories.tsx +50 -0
  336. package/src/components/forms/controls/Switch/Switch.tsx +46 -0
  337. package/src/components/forms/fields/CheckboxField/CheckboxField.module.scss +46 -0
  338. package/src/components/forms/fields/CheckboxField/CheckboxField.stories.tsx +74 -0
  339. package/src/components/forms/fields/CheckboxField/CheckboxField.tsx +118 -0
  340. package/src/components/forms/fields/CheckboxGroup/CheckboxGroup.module.scss +22 -0
  341. package/src/components/forms/fields/CheckboxGroup/CheckboxGroup.stories.tsx +36 -0
  342. package/src/components/forms/fields/CheckboxGroup/CheckboxGroup.tsx +37 -0
  343. package/src/components/forms/fields/InputField/InputField.module.scss +24 -0
  344. package/src/components/forms/fields/InputField/InputField.stories.tsx +57 -0
  345. package/src/components/forms/fields/InputField/InputField.tsx +72 -0
  346. package/src/components/graphics/Icon/Icon.module.scss +42 -0
  347. package/src/components/graphics/Icon/Icon.stories.tsx +67 -0
  348. package/src/components/graphics/Icon/Icon.tsx +50 -0
  349. package/src/components/graphics/PlaceholderEmpty/PlaceholderEmpty.module.scss +76 -0
  350. package/src/components/graphics/PlaceholderEmpty/PlaceholderEmpty.stories.tsx +101 -0
  351. package/src/components/graphics/PlaceholderEmpty/PlaceholderEmpty.tsx +91 -0
  352. package/src/components/graphics/ProgressBar/ProgressBar.module.scss +43 -0
  353. package/src/components/graphics/ProgressBar/ProgressBar.stories.tsx +70 -0
  354. package/src/components/graphics/ProgressBar/ProgressBar.tsx +58 -0
  355. package/src/components/graphics/Spinner/Spinner.module.scss +61 -0
  356. package/src/components/graphics/Spinner/Spinner.stories.tsx +56 -0
  357. package/src/components/graphics/Spinner/Spinner.tsx +41 -0
  358. package/src/components/lists/PropertyList/PropertyList.module.scss +33 -0
  359. package/src/components/lists/PropertyList/PropertyList.stories.tsx +45 -0
  360. package/src/components/lists/PropertyList/PropertyList.tsx +60 -0
  361. package/src/components/navigations/Stepper/Stepper.module.scss +88 -0
  362. package/src/components/navigations/Stepper/Stepper.stories.tsx +68 -0
  363. package/src/components/navigations/Stepper/Stepper.tsx +95 -0
  364. package/src/components/navigations/Tabs/Tabs.module.scss +71 -0
  365. package/src/components/navigations/Tabs/Tabs.stories.tsx +106 -0
  366. package/src/components/navigations/Tabs/Tabs.tsx +121 -0
  367. package/src/components/overlays/DropdownMenu/DropdownMenu.module.scss +113 -0
  368. package/src/components/overlays/DropdownMenu/DropdownMenu.stories.tsx +91 -0
  369. package/src/components/overlays/DropdownMenu/DropdownMenu.tsx +155 -0
  370. package/src/components/overlays/DropdownMenu/DropdownMenuProvider.module.scss +105 -0
  371. package/src/components/overlays/DropdownMenu/DropdownMenuProvider.stories.tsx +71 -0
  372. package/src/components/overlays/DropdownMenu/DropdownMenuProvider.tsx +168 -0
  373. package/src/components/overlays/Modal/Modal.module.scss +185 -0
  374. package/src/components/overlays/Modal/Modal.stories.tsx +144 -0
  375. package/src/components/overlays/Modal/Modal.tsx +202 -0
  376. package/src/components/overlays/Toast/Toast.module.scss +123 -0
  377. package/src/components/overlays/Toast/Toast.stories.tsx +219 -0
  378. package/src/components/overlays/Toast/Toast.tsx +233 -0
  379. package/src/components/overlays/Toast/ToastyOverride.scss +27 -0
  380. package/src/components/overlays/Tooltip/Tooltip.module.scss +162 -0
  381. package/src/components/overlays/Tooltip/Tooltip.stories.tsx +115 -0
  382. package/src/components/overlays/Tooltip/Tooltip.tsx +75 -0
  383. package/src/components/overlays/Tooltip/TooltipProvider.stories.tsx +169 -0
  384. package/src/components/overlays/Tooltip/TooltipProvider.tsx +164 -0
  385. package/src/components/util/Clipboard/Clipboard.tsx +11 -0
  386. package/src/components/util/Popover/Popover.tsx +219 -0
  387. package/src/docs/Changelog.mdx +7 -0
  388. package/src/docs/Colors.mdx +113 -0
  389. package/src/docs/Colors.module.scss +56 -0
  390. package/src/docs/Iconography.mdx +70 -0
  391. package/src/docs/Iconography.module.scss +37 -0
  392. package/src/docs/Introduction.mdx +26 -0
  393. package/src/docs/Typography.mdx +109 -0
  394. package/src/docs/Typography.module.scss +22 -0
  395. package/src/layouts/AppLayout/AppLayout.module.scss +110 -0
  396. package/src/layouts/AppLayout/AppLayout.stories.tsx +112 -0
  397. package/src/layouts/AppLayout/AppLayout.tsx +31 -0
  398. package/src/layouts/AppLayout/Breadcrumbs/Breadcrumbs.module.scss +47 -0
  399. package/src/layouts/AppLayout/Breadcrumbs/Breadcrumbs.stories.tsx +66 -0
  400. package/src/layouts/AppLayout/Breadcrumbs/Breadcrumbs.tsx +63 -0
  401. package/src/layouts/AppLayout/Header/AccountSelector.module.scss +24 -0
  402. package/src/layouts/AppLayout/Header/AccountSelector.stories.tsx +31 -0
  403. package/src/layouts/AppLayout/Header/AccountSelector.tsx +51 -0
  404. package/src/layouts/AppLayout/Header/Header.module.scss +74 -0
  405. package/src/layouts/AppLayout/Header/Header.stories.tsx +30 -0
  406. package/src/layouts/AppLayout/Header/Header.tsx +31 -0
  407. package/src/layouts/AppLayout/Header/SolutionSelector.module.scss +24 -0
  408. package/src/layouts/AppLayout/Header/SolutionSelector.stories.tsx +31 -0
  409. package/src/layouts/AppLayout/Header/SolutionSelector.tsx +50 -0
  410. package/src/layouts/AppLayout/Header/UserMenu.module.scss +31 -0
  411. package/src/layouts/AppLayout/Header/UserMenu.stories.tsx +32 -0
  412. package/src/layouts/AppLayout/Header/UserMenu.tsx +67 -0
  413. package/src/layouts/AppLayout/Logo/Logo.module.scss +78 -0
  414. package/src/layouts/AppLayout/Logo/Logo.tsx +38 -0
  415. package/src/layouts/AppLayout/Nav/Nav.module.scss +73 -0
  416. package/src/layouts/AppLayout/Nav/Nav.stories.tsx +32 -0
  417. package/src/layouts/AppLayout/Nav/Nav.tsx +75 -0
  418. package/src/layouts/AppLayout/Sidebar/Sidebar.module.scss +46 -0
  419. package/src/layouts/AppLayout/Sidebar/Sidebar.stories.tsx +30 -0
  420. package/src/layouts/AppLayout/Sidebar/Sidebar.tsx +33 -0
  421. package/src/layouts/FormLayout/FormLayout.module.scss +19 -0
  422. package/src/layouts/FormLayout/FormLayout.stories.tsx +64 -0
  423. package/src/layouts/FormLayout/FormLayout.tsx +32 -0
  424. package/src/styling/accessibility.css +24 -0
  425. package/src/styling/context/theming.scss +26 -0
  426. package/src/styling/context/theming_mixins.scss +79 -0
  427. package/src/styling/defs.scss +60 -0
  428. package/src/styling/fonts.css +126 -0
  429. package/src/styling/fonts_mixins.scss +16 -0
  430. package/src/styling/global.scss +49 -0
  431. package/src/styling/lib/normalize.css +78 -0
  432. package/src/styling/lib/reset-custom.css +58 -0
  433. package/src/styling/lib/reset.css +115 -0
  434. package/src/styling/main.scss +29 -0
  435. package/src/styling/variables.css +18 -0
  436. package/src/styling/variables.scss +928 -0
  437. package/src/styling/variables.ts +64 -0
  438. package/src/types/globals.d.ts +14 -0
  439. package/src/types/vite-env.d.ts +1 -0
  440. package/src/typography/BodyText/BodyText.mixins.scss +224 -0
  441. package/src/typography/BodyText/BodyText.module.scss +28 -0
  442. package/src/typography/BodyText/BodyText.stories.tsx +109 -0
  443. package/src/typography/BodyText/BodyText.tsx +30 -0
  444. package/src/typography/Heading/Heading.mixins.scss +42 -0
  445. package/src/typography/Heading/Heading.module.scss +15 -0
  446. package/src/typography/Heading/Heading.stories.tsx +112 -0
  447. package/src/typography/Heading/Heading.tsx +57 -0
  448. package/src/util/componentUtil.ts +19 -0
  449. package/src/util/drag.ts +197 -0
  450. package/src/util/reactUtil.ts +40 -0
  451. package/src/util/storybook/OverflowTester.css +13 -0
  452. package/src/util/storybook/OverflowTester.tsx +30 -0
  453. package/src/util/time.ts +12 -0
  454. package/src/util/types.ts +8 -0
@@ -0,0 +1,198 @@
1
+ /* Copyright (c) Fortanix, Inc.
2
+ |* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of
3
+ |* the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
+
5
+ import type { Meta, StoryObj } from '@storybook/react';
6
+
7
+ import * as React from 'react';
8
+
9
+ import { Banner, BannerAction } from './Banner.tsx';
10
+ import { Button } from '../../actions/Button/Button.tsx';
11
+
12
+
13
+ type BannerArgs = React.ComponentProps<typeof Banner>;
14
+ type Story = StoryObj<BannerArgs>;
15
+
16
+ export default {
17
+ component: Banner,
18
+ parameters: {
19
+ layout: 'padded', // centered, padded, or fullscreen
20
+ },
21
+ tags: ['autodocs'],
22
+ argTypes: {
23
+ },
24
+ render: (args) => <Banner {...args}/>,
25
+ } satisfies Meta<BannerArgs>;
26
+
27
+
28
+ export const BannerInformational: Story = {
29
+ name: 'Informational',
30
+ args: {
31
+ title: 'Banner title',
32
+ closeButton: true,
33
+ variant: 'informational',
34
+ }
35
+ };
36
+
37
+ export const BannerInformationalWithNoCloseButton: Story = {
38
+ name: 'Informational with no close button',
39
+ args: {
40
+ title: 'Banner title',
41
+ closeButton: false,
42
+ variant: 'informational',
43
+ }
44
+ };
45
+
46
+ export const BannerInformationalWithSubtitle: Story = {
47
+ name: 'Informational with subtitle',
48
+ args: {
49
+ title: 'Banner title',
50
+ subtitle: 'Subtitle',
51
+ closeButton: true,
52
+ variant: 'informational',
53
+ }
54
+ };
55
+
56
+ export const BannerInformationalWithButton: Story = {
57
+ name: 'Informational with button',
58
+ args: {
59
+ title: 'Banner tasdasdadsadsitle',
60
+ subtitle: 'Subtitle text gasdasd',
61
+ closeButton: true,
62
+ variant: 'informational',
63
+ actions: (
64
+ <BannerAction>
65
+ <Button variant="tertiary" onClick={() => alert('clicked')}>Button</Button>
66
+ </BannerAction>
67
+ ),
68
+ }
69
+ };
70
+
71
+ export const BannerSuccess: Story = {
72
+ name: 'Success',
73
+ args: {
74
+ title: 'Banner title',
75
+ closeButton: true,
76
+ variant: 'success',
77
+ }
78
+ };
79
+
80
+ export const BannerSuccessWithNoCloseButton: Story = {
81
+ name: 'Success with no close button',
82
+ args: {
83
+ title: 'Banner title',
84
+ closeButton: false,
85
+ variant: 'success',
86
+ }
87
+ };
88
+
89
+ export const BannerSuccessWithSubtitle: Story = {
90
+ name: 'Success with subtitle',
91
+ args: {
92
+ title: 'Banner title',
93
+ subtitle: 'Subtitle',
94
+ closeButton: true,
95
+ variant: 'success',
96
+ }
97
+ };
98
+
99
+ export const BannerSuccessWithButton: Story = {
100
+ name: 'Success with button',
101
+ args: {
102
+ title: 'Banner tasdasdadsadsitle',
103
+ subtitle: 'Subtitle text gasdasd',
104
+ closeButton: true,
105
+ variant: 'success',
106
+ actions: (
107
+ <BannerAction>
108
+ <Button variant="tertiary" onClick={() => alert('clicked')}>Button</Button>
109
+ </BannerAction>
110
+ ),
111
+ }
112
+ };
113
+
114
+ export const BannerWarning: Story = {
115
+ name: 'Warning',
116
+ args: {
117
+ title: 'Banner title',
118
+ closeButton: true,
119
+ variant: 'warning',
120
+ }
121
+ };
122
+
123
+ export const BannerWarningWithNoCloseButton: Story = {
124
+ name: 'Warning with no close button',
125
+ args: {
126
+ title: 'Banner title',
127
+ closeButton: false,
128
+ variant: 'warning',
129
+ }
130
+ };
131
+
132
+ export const BannerWarningWithSubtitle: Story = {
133
+ name: 'Warning with subtitle',
134
+ args: {
135
+ title: 'Banner title',
136
+ subtitle: 'Subtitle',
137
+ closeButton: true,
138
+ variant: 'warning',
139
+ }
140
+ };
141
+
142
+ export const BannerWarningWithButton: Story = {
143
+ name: 'Warning with button',
144
+ args: {
145
+ title: 'Banner tasdasdadsadsitle',
146
+ subtitle: 'Subtitle text gasdasd',
147
+ closeButton: true,
148
+ variant: 'warning',
149
+ actions: (
150
+ <BannerAction>
151
+ <Button variant="tertiary" onClick={() => alert('clicked')}>Button</Button>
152
+ </BannerAction>
153
+ ),
154
+ }
155
+ };
156
+
157
+ export const BannerAlert: Story = {
158
+ name: 'Alert',
159
+ args: {
160
+ title: 'Banner title',
161
+ closeButton: true,
162
+ variant: 'alert',
163
+ }
164
+ };
165
+
166
+ export const BannerAlertWithNoCloseButton: Story = {
167
+ name: 'Alert with no close button',
168
+ args: {
169
+ title: 'Banner title',
170
+ closeButton: false,
171
+ variant: 'alert',
172
+ }
173
+ };
174
+
175
+ export const BannerAlertWithSubtitle: Story = {
176
+ name: 'Alert with subtitle',
177
+ args: {
178
+ title: 'Banner title',
179
+ subtitle: 'Subtitle',
180
+ closeButton: true,
181
+ variant: 'alert',
182
+ }
183
+ };
184
+
185
+ export const BannerAlertWithButton: Story = {
186
+ name: 'Alert with button',
187
+ args: {
188
+ title: 'Banner tasdasdadsadsitle',
189
+ subtitle: 'Subtitle text gasdasd',
190
+ closeButton: true,
191
+ variant: 'alert',
192
+ actions: (
193
+ <BannerAction>
194
+ <Button variant="tertiary" onClick={() => alert('clicked')}>Button</Button>
195
+ </BannerAction>
196
+ ),
197
+ }
198
+ };
@@ -0,0 +1,121 @@
1
+ /* Copyright (c) Fortanix, Inc.
2
+ |* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of
3
+ |* the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
+
5
+ import * as React from 'react';
6
+ import { classNames as cx, type ComponentProps } from '../../../util/componentUtil.ts';
7
+
8
+ import cl from './Banner.module.scss';
9
+ import { Icon } from '../../graphics/Icon/Icon.tsx';
10
+ import { Button } from '../../actions/Button/Button.tsx';
11
+
12
+
13
+ export { cl as BannerClassNames };
14
+
15
+ type BannerIconProps = React.PropsWithChildren<ComponentProps<'div'> & {
16
+ variant: 'informational' | 'success' | 'warning' | 'alert',
17
+ }>;
18
+ const BannerIcon = (props: BannerIconProps) => {
19
+ const { variant } = props;
20
+ let icon = variant;
21
+ if (icon === 'informational') {
22
+ icon = 'warning';
23
+ }
24
+ return (<Icon icon={icon} />);
25
+ };
26
+
27
+ export type BannerProps = React.PropsWithChildren<ComponentProps<'div'> & {
28
+ /**
29
+ * Whether the component should include the default styling. Defaults to false.
30
+ */
31
+ unstyled?: undefined | boolean,
32
+
33
+ /**
34
+ * Which variant to display, which changes the color and left icon. Defaults to "informational".
35
+ */
36
+ variant?: undefined | 'informational' | 'success' | 'warning' | 'alert',
37
+
38
+ /**
39
+ * The message to displayed on the banner. Mandatory.
40
+ */
41
+ title: string,
42
+
43
+ /**
44
+ * A sub message to be displayed next to the title. Optional.
45
+ */
46
+ subtitle?: undefined | string,
47
+
48
+ /**
49
+ * Whether the banner can be closed. Optional. Defaults to false.
50
+ */
51
+ closeButton?: boolean,
52
+
53
+ /**
54
+ * Any additional actions to be shown in the banner, such as a button.
55
+ */
56
+ actions?: undefined | React.ReactNode,
57
+ }>;
58
+
59
+ /**
60
+ * A banner component, similar to a toast.
61
+ */
62
+ export const Banner = (props: BannerProps) => {
63
+ const {
64
+ unstyled = false,
65
+ variant = 'informational',
66
+ title = '',
67
+ subtitle = '',
68
+ closeButton = false,
69
+ actions = null,
70
+ ...propsRest
71
+ } = props;
72
+
73
+ const [isClosed, setIsClosed] = React.useState(false);
74
+
75
+ if (isClosed) {
76
+ return null;
77
+ }
78
+
79
+ return (
80
+ <div
81
+ role="presentation"
82
+ {...propsRest}
83
+ className={cx({
84
+ bk: true,
85
+ [cl['bk-banner']]: !unstyled,
86
+ [cl[`bk-banner--${variant}`]]: variant,
87
+ }, propsRest.className)}
88
+ >
89
+ <span className={cl['bk-banner__icon']}>
90
+ <BannerIcon variant={variant} />
91
+ </span>
92
+ <strong className={cl['bk-banner__title']}>{title}</strong>
93
+ {subtitle && (
94
+ <span className={cl['bk-banner__subtitle']}>{subtitle}</span>
95
+ )}
96
+
97
+ {actions}
98
+ {closeButton && (
99
+ <Button
100
+ className={cl['bk-banner__close-button']}
101
+ onClick={() => setIsClosed(true)}
102
+ >
103
+ <Icon icon="cross" />
104
+ </Button>
105
+ )}
106
+ </div>
107
+ );
108
+ };
109
+
110
+ export type BannerActionProps = React.PropsWithChildren<ComponentProps<'div'>>;
111
+
112
+ /**
113
+ * A wrapper component, intended to easily add some styling to children's `<Button/>`'s. UX expects that such buttons are `<Button variant="tertiary"/>`.
114
+ */
115
+ export const BannerAction = (props: BannerActionProps) => {
116
+ return (
117
+ <div className={cl['bk-banner__action']}>
118
+ {props.children}
119
+ </div>
120
+ );
121
+ };
@@ -0,0 +1,32 @@
1
+ /* Copyright (c) Fortanix, Inc.
2
+ |* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of
3
+ |* the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
+
5
+ @use '../../../styling/defs.scss' as bk;
6
+
7
+ @mixin bk-card($name: bk-card) {
8
+ --bk-card-background-color: #{bk.$theme-card-background-default};
9
+ --bk-card-border-color: #{bk.$theme-card-border-default};
10
+
11
+ overflow: hidden;
12
+
13
+ min-height: bk.$spacing-16;
14
+ padding: bk.$spacing-4;
15
+
16
+ background: var(--bk-card-background-color);
17
+ border: bk.$size-1 solid var(--bk-card-border-color);
18
+ border-radius: bk.$radius-m;
19
+
20
+ .#{$name}__heading {
21
+ margin-bottom: bk.$spacing-5;
22
+ text-wrap: nowrap;
23
+ text-overflow: ellipsis;
24
+ }
25
+ }
26
+
27
+ @layer baklava.components {
28
+ .bk-card {
29
+ @include bk.component-base(bk-card);
30
+ @include bk-card;
31
+ }
32
+ }
@@ -0,0 +1,67 @@
1
+ /* Copyright (c) Fortanix, Inc.
2
+ |* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of
3
+ |* the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
+
5
+ import * as React from 'react';
6
+
7
+ import type { Meta, StoryObj } from '@storybook/react';
8
+
9
+ import { Alert } from '../Alert/Alert.tsx';
10
+
11
+ import { Card } from './Card.tsx';
12
+
13
+
14
+ type CardArgs = React.ComponentProps<typeof Card>;
15
+ type Story = StoryObj<typeof Card>;
16
+
17
+ const lorem = `Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et
18
+ dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
19
+ consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
20
+ Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.`;
21
+
22
+ export default {
23
+ component: Card,
24
+ parameters: {
25
+ layout: 'centered',
26
+ design: { type: 'figma', url: 'https://www.figma.com/embed?embed_host=share&url=https%3A%2F%2Fwww.figma.com%2Fdesign%2FnOF5w9LfPiJabQD5yPzCEp%2F2024-Design-System-UX%3Fnode-id%3D41%253A4484%26t%3DaJEqUzt6fUeABwmK-1' },
27
+ },
28
+ tags: ['autodocs'],
29
+ argTypes: {},
30
+ args: {
31
+ unstyled: false,
32
+ children: <><Card.Heading>Card</Card.Heading>{lorem}</>,
33
+ },
34
+ render: (args) => <Card {...args}/>,
35
+ } satisfies Meta<CardArgs>;
36
+
37
+
38
+ export const Standard: Story = {
39
+ decorators: [
40
+ Story => <div style={{ width: '30vw' }}><Story/></div>
41
+ ],
42
+ };
43
+
44
+ /** Multiple cards in a grid. */
45
+ export const Multiple: Story = {
46
+ render: (args) => (
47
+ <div style={{
48
+ display: 'grid',
49
+ gap: '1.2rem',
50
+ gridTemplateColumns: 'repeat(auto-fit, minmax(min(30vw, 100%), 1fr))',
51
+ }}>
52
+ <Card {...args}><Card.Heading>Card 1</Card.Heading>Card content.</Card>
53
+ <Card {...args}><Card.Heading>Card 2</Card.Heading>{lorem}</Card>
54
+ <Card {...args}><Card.Heading>Card 3</Card.Heading>Card content.</Card>
55
+ </div>
56
+ ),
57
+ decorators: [
58
+ Story => (
59
+ <div style={{ width: '70vw', display: 'flex', flexFlow: 'column', gap: '1.2rem' }}>
60
+ <Alert kind="info">
61
+ Cards have no margin by default. Use a flex/grid container to space the cards.
62
+ </Alert>
63
+ <Story/>
64
+ </div>
65
+ ),
66
+ ],
67
+ };
@@ -0,0 +1,48 @@
1
+ /* Copyright (c) Fortanix, Inc.
2
+ |* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of
3
+ |* the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
+
5
+ import * as React from 'react';
6
+ import { classNames as cx, type ComponentProps } from '../../../util/componentUtil.ts';
7
+
8
+ import { H5 } from '../../../typography/Heading/Heading.tsx';
9
+
10
+ import cl from './Card.module.scss';
11
+
12
+
13
+ export { cl as CardClassNames };
14
+
15
+
16
+ export type CardHeadingProps = React.PropsWithChildren<ComponentProps<typeof H5>>;
17
+ export const CardHeading = (props: CardHeadingProps) => {
18
+ return <H5 {...props} className={cx(cl['bk-card__heading'], props.className)}/>;
19
+ };
20
+
21
+ export type CardProps = React.PropsWithChildren<ComponentProps<'section'> & {
22
+ /** Whether this component should be unstyled. */
23
+ unstyled?: undefined | boolean,
24
+ }>;
25
+ /**
26
+ * Card component, a container similar to a panel but smaller and usually used in a list or grid.
27
+ */
28
+ export const Card = Object.assign(
29
+ (props: CardProps) => {
30
+ const { children, unstyled = false, ...propsRest } = props;
31
+
32
+ return (
33
+ <section
34
+ {...propsRest}
35
+ className={cx(
36
+ 'bk',
37
+ { [cl['bk-card']]: !unstyled },
38
+ propsRest.className,
39
+ )}
40
+ >
41
+ {children}
42
+ </section>
43
+ );
44
+ },
45
+ {
46
+ Heading: CardHeading,
47
+ },
48
+ );
@@ -0,0 +1,166 @@
1
+ /* Copyright (c) Fortanix, Inc.
2
+ |* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of
3
+ |* the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
+
5
+ @use '../../../styling/defs.scss' as bk;
6
+ @use '../../containers/Panel/Panel.module.scss' as Panel;
7
+
8
+ @layer baklava.components {
9
+ .bk-dialog {
10
+ @include bk.component-base(bk-dialog);
11
+ @include Panel.bk-panel;
12
+
13
+ /* --bk-dialog-background-color: color-mix(in srgb, var(--bk-panel-background-color) 80%, transparent); */
14
+ --bk-dialog-background-color: var(--bk-panel-background-color);
15
+
16
+ --bk-dialog-inset: calc(var(--bk-sizing-3) + var(--bk-sizing-2));
17
+
18
+ position: static;
19
+
20
+ margin: auto;
21
+ padding: 0;
22
+ width: var(--bk-sizing-9);
23
+ max-width: calc(100% - 6px - 2em);
24
+ height: fit-content;
25
+ min-height: 60%;
26
+ max-height: calc(100% - 6px - 2em);
27
+
28
+ box-shadow: 0 8px 10px 1px rgba(0 0 0 / 14%), 0 3px 14px 2px rgba(0 0 0 / 12%), 0 5px 5px -3px rgba(0 0 0 / 3%);
29
+ background-color: var(--bk-dialog-background-color);
30
+ border-radius: var(--bk-sizing-2);
31
+
32
+ display: flex;
33
+ flex-direction: column;
34
+
35
+ .bk-dialog__header {
36
+ position: sticky;
37
+ top: 0;
38
+ padding: var(--bk-sizing-2) var(--bk-dialog-inset);
39
+
40
+ background: var(--bk-dialog-background-color);
41
+
42
+ --header-shadow-size: calc(var(--bk-sizing-1) / 2);
43
+ box-shadow: 0 var(--header-shadow-size) 0 0 rgba(0 0 0 / 12%);
44
+ /* Clip everything except the bottom shadow (-1px for weird clipping behavior with scroll) */
45
+ clip-path: inset(-1px -1px calc(-1 * var(--header-shadow-size)) -1px);
46
+
47
+ display: flex;
48
+ flex-direction: row;
49
+ align-items: baseline;
50
+
51
+ h1 {
52
+ font-size: 1.4rem;
53
+ font-weight: 300;
54
+ text-transform: uppercase;
55
+ }
56
+
57
+ :nth-child(1 of :global(.action)) {
58
+ margin-left: auto;
59
+ }
60
+ :global(.action) {
61
+ align-self: center;
62
+ }
63
+ }
64
+
65
+ .bk-dialog__content {
66
+ flex: 1; /* Make sure we cover all available space */
67
+ padding: var(--bk-dialog-inset);
68
+ padding-top: var(--bk-sizing-3);
69
+ }
70
+
71
+ .bk-dialog__actions {
72
+ padding: var(--bk-dialog-inset);
73
+ padding-top: 0;
74
+
75
+ display: flex;
76
+ flex-direction: row;
77
+ gap: 0.8rem;
78
+ }
79
+
80
+
81
+ /* Variant: slide out */
82
+ --dialog-slide-out-inset: var(--bk-sizing-3);
83
+ &:is(.bk-dialog--slide-out-left, .bk-dialog--slide-out-right) {
84
+ position: fixed;
85
+ inset: 0;
86
+ margin: 0;
87
+ width: 60vw;
88
+ height: auto;
89
+ max-height: 100%;
90
+
91
+ &.bk-dialog--slide-out-left {
92
+ right: auto;
93
+ transform-origin: center left;
94
+ border-top-left-radius: 0;
95
+ border-bottom-left-radius: 0;
96
+ }
97
+ &.bk-dialog--slide-out-right {
98
+ left: auto;
99
+ transform-origin: center right;
100
+ border-top-right-radius: 0;
101
+ border-bottom-right-radius: 0;
102
+ }
103
+
104
+ opacity: 1;
105
+ transform: scaleX(0);
106
+ &:modal {
107
+ transform: scaleX(1);
108
+
109
+ @starting-style {
110
+ opacity: 1;
111
+ transform: scaleX(0);
112
+ }
113
+ }
114
+
115
+ .bk-dialog__content {
116
+ overflow: auto;
117
+ }
118
+ }
119
+
120
+
121
+ /* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog#animating_dialogs */
122
+
123
+ &:not([open]) {
124
+ opacity: 0;
125
+ scale: 0.98 0.98;
126
+ transition:
127
+ opacity 1ms ease-out,
128
+ scale 1ms ease-out,
129
+ overlay 1ms ease-out allow-discrete,
130
+ display 1ms ease-out allow-discrete;
131
+ transition-duration: 200ms; /* Exit transition duration */
132
+ }
133
+
134
+ &:modal {
135
+ display: flex;
136
+ opacity: 1;
137
+ scale: 1 1;
138
+ transition-duration: 120ms; /* Enter transition duration */
139
+ transition-timing-function: ease-in;
140
+
141
+ @starting-style {
142
+ opacity: 0;
143
+ scale: 1.05 1.05;
144
+ }
145
+ }
146
+ }
147
+
148
+ /* Note: `::backdrop` cannot be nested/scoped (at least in Chrome v120) */
149
+ .bk-dialog::backdrop {
150
+ --transition-time: 200ms;
151
+ background-color: rgb(0 0 0 / 0%);
152
+ transition:
153
+ display var(--transition-time) allow-discrete,
154
+ overlay var(--transition-time) allow-discrete,
155
+ background-color var(--transition-time);
156
+ }
157
+ .bk-dialog:modal::backdrop {
158
+ background-color: rgb(0 0 0 / 20%);
159
+ backdrop-filter: blur(5px); /* Should be in px, not rem (blur effect should be constant) */
160
+ }
161
+ @starting-style {
162
+ .bk-dialog:modal::backdrop {
163
+ background-color: rgb(0 0 0 / 0%);
164
+ }
165
+ }
166
+ }
@@ -0,0 +1,32 @@
1
+ /* Copyright (c) Fortanix, Inc.
2
+ |* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of
3
+ |* the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
+
5
+ import * as React from 'react';
6
+
7
+ import type { Meta, StoryObj } from '@storybook/react';
8
+
9
+ import { OverflowTester } from '../../../util/storybook/OverflowTester.tsx';
10
+ import { Button } from '../../actions/Button/Button.tsx';
11
+ import { Dialog } from './Dialog.tsx';
12
+
13
+
14
+ type ButtonArgs = React.ComponentProps<typeof Dialog>;
15
+ type Story = StoryObj<ButtonArgs>;
16
+
17
+ export default {
18
+ component: Dialog,
19
+ parameters: {
20
+ layout: 'padded',
21
+ },
22
+ tags: ['autodocs'],
23
+ argTypes: {
24
+ },
25
+ } satisfies Meta<ButtonArgs>;
26
+
27
+
28
+ export const Standard: Story = {
29
+ args: {
30
+ children: <>Dialog content</>,
31
+ },
32
+ };