@epfl-sti/poesis 0.1.8 → 0.1.9

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 (91) hide show
  1. package/dist/poesis.js +326 -220
  2. package/dist/poesis.js.map +1 -1
  3. package/package.json +1 -1
  4. package/dist/components/data-display/Card.d.ts +0 -20
  5. package/dist/components/data-display/Card.d.ts.map +0 -1
  6. package/dist/components/data-display/DescriptionList.d.ts +0 -23
  7. package/dist/components/data-display/DescriptionList.d.ts.map +0 -1
  8. package/dist/components/data-display/EmptyState.d.ts +0 -18
  9. package/dist/components/data-display/EmptyState.d.ts.map +0 -1
  10. package/dist/components/data-display/Table.d.ts +0 -53
  11. package/dist/components/data-display/Table.d.ts.map +0 -1
  12. package/dist/components/data-display/index.d.ts +0 -5
  13. package/dist/components/data-display/index.d.ts.map +0 -1
  14. package/dist/components/feedback/Alert.d.ts +0 -18
  15. package/dist/components/feedback/Alert.d.ts.map +0 -1
  16. package/dist/components/feedback/ConfirmDialog.d.ts +0 -26
  17. package/dist/components/feedback/ConfirmDialog.d.ts.map +0 -1
  18. package/dist/components/feedback/Dialog.d.ts +0 -20
  19. package/dist/components/feedback/Dialog.d.ts.map +0 -1
  20. package/dist/components/feedback/Toast.d.ts +0 -5
  21. package/dist/components/feedback/Toast.d.ts.map +0 -1
  22. package/dist/components/feedback/index.d.ts +0 -6
  23. package/dist/components/feedback/index.d.ts.map +0 -1
  24. package/dist/components/feedback/toastContext.d.ts +0 -17
  25. package/dist/components/feedback/toastContext.d.ts.map +0 -1
  26. package/dist/components/layout/BurgerDrawer.d.ts +0 -25
  27. package/dist/components/layout/BurgerDrawer.d.ts.map +0 -1
  28. package/dist/components/layout/PageShell.d.ts +0 -32
  29. package/dist/components/layout/PageShell.d.ts.map +0 -1
  30. package/dist/components/layout/SideNav.d.ts +0 -22
  31. package/dist/components/layout/SideNav.d.ts.map +0 -1
  32. package/dist/components/layout/TopNav.d.ts +0 -24
  33. package/dist/components/layout/TopNav.d.ts.map +0 -1
  34. package/dist/components/layout/index.d.ts +0 -10
  35. package/dist/components/layout/index.d.ts.map +0 -1
  36. package/dist/components/layout/types.d.ts +0 -31
  37. package/dist/components/layout/types.d.ts.map +0 -1
  38. package/dist/components/ui/Avatar.d.ts +0 -25
  39. package/dist/components/ui/Avatar.d.ts.map +0 -1
  40. package/dist/components/ui/Badge.d.ts +0 -34
  41. package/dist/components/ui/Badge.d.ts.map +0 -1
  42. package/dist/components/ui/Button.d.ts +0 -35
  43. package/dist/components/ui/Button.d.ts.map +0 -1
  44. package/dist/components/ui/Checkbox.d.ts +0 -16
  45. package/dist/components/ui/Checkbox.d.ts.map +0 -1
  46. package/dist/components/ui/DropdownMenu.d.ts +0 -30
  47. package/dist/components/ui/DropdownMenu.d.ts.map +0 -1
  48. package/dist/components/ui/FileUpload.d.ts +0 -27
  49. package/dist/components/ui/FileUpload.d.ts.map +0 -1
  50. package/dist/components/ui/IconButton.d.ts +0 -34
  51. package/dist/components/ui/IconButton.d.ts.map +0 -1
  52. package/dist/components/ui/Input.d.ts +0 -21
  53. package/dist/components/ui/Input.d.ts.map +0 -1
  54. package/dist/components/ui/LanguageSwitcher.d.ts +0 -11
  55. package/dist/components/ui/LanguageSwitcher.d.ts.map +0 -1
  56. package/dist/components/ui/Popover.d.ts +0 -18
  57. package/dist/components/ui/Popover.d.ts.map +0 -1
  58. package/dist/components/ui/ProgressBar.d.ts +0 -30
  59. package/dist/components/ui/ProgressBar.d.ts.map +0 -1
  60. package/dist/components/ui/RadioGroup.d.ts +0 -45
  61. package/dist/components/ui/RadioGroup.d.ts.map +0 -1
  62. package/dist/components/ui/Select.d.ts +0 -15
  63. package/dist/components/ui/Select.d.ts.map +0 -1
  64. package/dist/components/ui/Spinner.d.ts +0 -19
  65. package/dist/components/ui/Spinner.d.ts.map +0 -1
  66. package/dist/components/ui/Switch.d.ts +0 -12
  67. package/dist/components/ui/Switch.d.ts.map +0 -1
  68. package/dist/components/ui/Tabs.d.ts +0 -36
  69. package/dist/components/ui/Tabs.d.ts.map +0 -1
  70. package/dist/components/ui/Textarea.d.ts +0 -18
  71. package/dist/components/ui/Textarea.d.ts.map +0 -1
  72. package/dist/components/ui/ThemeToggle.d.ts +0 -16
  73. package/dist/components/ui/ThemeToggle.d.ts.map +0 -1
  74. package/dist/components/ui/Tooltip.d.ts +0 -16
  75. package/dist/components/ui/Tooltip.d.ts.map +0 -1
  76. package/dist/components/ui/index.d.ts +0 -20
  77. package/dist/components/ui/index.d.ts.map +0 -1
  78. package/dist/hooks/useAuth.d.ts +0 -33
  79. package/dist/hooks/useAuth.d.ts.map +0 -1
  80. package/dist/hooks/useLanguage.d.ts +0 -14
  81. package/dist/hooks/useLanguage.d.ts.map +0 -1
  82. package/dist/hooks/useTheme.d.ts +0 -21
  83. package/dist/hooks/useTheme.d.ts.map +0 -1
  84. package/dist/i18n/index.d.ts +0 -3
  85. package/dist/i18n/index.d.ts.map +0 -1
  86. package/dist/lib.d.ts +0 -11
  87. package/dist/lib.d.ts.map +0 -1
  88. package/dist/routes/types.d.ts +0 -39
  89. package/dist/routes/types.d.ts.map +0 -1
  90. package/dist/theme/reactSelectStyles.d.ts +0 -12
  91. package/dist/theme/reactSelectStyles.d.ts.map +0 -1
package/dist/poesis.js CHANGED
@@ -1,23 +1,23 @@
1
1
  (function(){try{if(typeof document<`u`){var e=document.createElement(`style`);e.appendChild(document.createTextNode(`/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-xl:36rem;--container-6xl:72rem;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--shadow-sm:0 1px 2px #0000000f;--shadow-md:0 2px 8px #00000014;--shadow-lg:0 4px 16px #0000001a;--shadow-xl:0 8px 32px #0000001f;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-epfl-red:red;--color-epfl-red-dark:#b51f1f;--color-epfl-leman:#00a79f;--color-epfl-canard:#007480;--color-epfl-canard-dark:#004248;--color-primary:var(--action-primary);--color-primary-hover:var(--action-primary-hover);--color-bg-primary:var(--bg-primary);--color-bg-secondary:var(--bg-secondary);--color-bg-tertiary:var(--bg-tertiary);--color-border:var(--border-default);--color-border-strong:var(--border-strong);--color-text-primary:var(--text-primary);--color-text-secondary:var(--text-secondary);--color-text-muted:var(--text-muted);--color-success:var(--semantic-success);--color-success-bg:var(--semantic-success-bg);--color-warning:var(--semantic-warning);--color-warning-bg:var(--semantic-warning-bg);--color-error:var(--semantic-error);--color-error-bg:var(--semantic-error-bg);--color-info:var(--semantic-info);--color-info-bg:var(--semantic-info-bg);--radius-full:9999px;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--spacing-xl:32px;--spacing-2xl:48px;--text-h1:2rem;--text-h1--line-height:1.2;--text-h2:1.5rem;--text-h2--line-height:1.3;--text-h3:1.25rem;--text-h3--line-height:1.4;--text-body:.9375rem;--text-body--line-height:1.5;--text-small:.8125rem;--text-small--line-height:1.5;--text-caption:.75rem;--text-caption--line-height:1.4}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.right-0{right:calc(var(--spacing) * 0)}.right-lg{right:var(--spacing-lg)}.bottom-lg{bottom:var(--spacing-lg)}.left-0{left:calc(var(--spacing) * 0)}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-lg{margin-top:var(--spacing-lg)}.mt-md{margin-top:var(--spacing-md)}.mt-xs{margin-top:var(--spacing-xs)}.mr-lg{margin-right:var(--spacing-lg)}.mr-sm{margin-right:var(--spacing-sm)}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-lg{margin-bottom:var(--spacing-lg)}.mb-md{margin-bottom:var(--spacing-md)}.mb-sm{margin-bottom:var(--spacing-sm)}.mb-xs{margin-bottom:var(--spacing-xs)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-14{width:calc(var(--spacing) * 14);height:calc(var(--spacing) * 14)}.size-16{width:calc(var(--spacing) * 16);height:calc(var(--spacing) * 16)}.size-20{width:calc(var(--spacing) * 20);height:calc(var(--spacing) * 20)}.size-full{width:100%;height:100%}.h-0\\.5{height:calc(var(--spacing) * .5)}.h-1\\.5{height:calc(var(--spacing) * 1.5)}.h-2\\.5{height:calc(var(--spacing) * 2.5)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-20{height:calc(var(--spacing) * 20)}.h-64{height:calc(var(--spacing) * 64)}.h-96{height:calc(var(--spacing) * 96)}.h-full{height:100%}.h-screen{height:100vh}.min-h-screen{min-height:100vh}.w-7{width:calc(var(--spacing) * 7)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-16{width:calc(var(--spacing) * 16)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-\\[4px\\]{width:4px}.w-\\[8px\\]{width:8px}.w-\\[16px\\]{width:16px}.w-\\[24px\\]{width:24px}.w-\\[32px\\]{width:32px}.w-\\[48px\\]{width:48px}.w-full{width:100%}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\\[24rem\\]{max-width:24rem}.max-w-\\[32rem\\]{max-width:32rem}.max-w-\\[42rem\\]{max-width:42rem}.max-w-\\[600px\\]{max-width:600px}.max-w-\\[var\\(--container-6xl\\)\\]{max-width:var(--container-6xl)}.max-w-\\[var\\(--container-md\\)\\]{max-width:var(--container-md)}.max-w-\\[var\\(--container-xl\\)\\]{max-width:var(--container-xl)}.max-w-\\[var\\(--container-xs\\)\\]{max-width:var(--container-xs)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--spacing-md)}.max-w-screen{max-width:100vw}.max-w-sm{max-width:var(--spacing-sm)}.max-w-xl{max-width:var(--spacing-xl)}.max-w-xs{max-width:var(--spacing-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\\[10rem\\]{min-width:10rem}.min-w-\\[500px\\]{min-width:500px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.-rotate-90{rotate:-90deg}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-dialog-in{animation:.2s ease-out dialog-in}.animate-floating-in{animation:.15s ease-out floating-in}.animate-slide-in{animation:.25s ease-out slide-in}.animate-spin{animation:var(--animate-spin)}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2xl{gap:var(--spacing-2xl)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-lg{gap:var(--spacing-lg)}.gap-md{gap:var(--spacing-md)}.gap-px{gap:1px}.gap-sm{gap:var(--spacing-sm)}.gap-xl{gap:var(--spacing-xl)}.gap-xs{gap:var(--spacing-xs)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--color-border)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.\\!rounded-lg{border-radius:var(--radius-lg)!important}.\\!rounded-md{border-radius:var(--radius-md)!important}.\\!rounded-sm{border-radius:var(--radius-sm)!important}.rounded{border-radius:.25rem}.rounded-full{border-radius:var(--radius-full)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.\\!border{border-style:var(--tw-border-style)!important;border-width:1px!important}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.\\!border-border{border-color:var(--color-border)!important}.\\!border-epfl-canard{border-color:var(--color-epfl-canard)!important}.\\!border-error{border-color:var(--color-error)!important}.\\!border-primary{border-color:var(--color-primary)!important}.border-border{border-color:var(--color-border)}.border-border-strong{border-color:var(--color-border-strong)}.border-error,.border-error\\/30{border-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.border-error\\/30{border-color:color-mix(in oklab, var(--color-error) 30%, transparent)}}.border-info\\/30{border-color:var(--color-info)}@supports (color:color-mix(in lab, red, red)){.border-info\\/30{border-color:color-mix(in oklab, var(--color-info) 30%, transparent)}}.border-primary{border-color:var(--color-primary)}.border-success\\/30{border-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.border-success\\/30{border-color:color-mix(in oklab, var(--color-success) 30%, transparent)}}.border-transparent{border-color:#0000}.border-warning\\/30{border-color:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.border-warning\\/30{border-color:color-mix(in oklab, var(--color-warning) 30%, transparent)}}.\\!bg-bg-tertiary{background-color:var(--color-bg-tertiary)!important}.\\!bg-epfl-canard{background-color:var(--color-epfl-canard)!important}.\\!bg-primary{background-color:var(--color-primary)!important}.bg-bg-primary{background-color:var(--color-bg-primary)}.bg-bg-secondary{background-color:var(--color-bg-secondary)}.bg-bg-tertiary,.bg-bg-tertiary\\/50{background-color:var(--color-bg-tertiary)}@supports (color:color-mix(in lab, red, red)){.bg-bg-tertiary\\/50{background-color:color-mix(in oklab, var(--color-bg-tertiary) 50%, transparent)}}.bg-black\\/40{background-color:#0006}@supports (color:color-mix(in lab, red, red)){.bg-black\\/40{background-color:color-mix(in oklab, var(--color-black) 40%, transparent)}}.bg-black\\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-border{background-color:var(--color-border)}.bg-border-strong{background-color:var(--color-border-strong)}.bg-epfl-canard{background-color:var(--color-epfl-canard)}.bg-epfl-canard-dark{background-color:var(--color-epfl-canard-dark)}.bg-epfl-leman{background-color:var(--color-epfl-leman)}.bg-epfl-red{background-color:var(--color-epfl-red)}.bg-epfl-red-dark{background-color:var(--color-epfl-red-dark)}.bg-error{background-color:var(--color-error)}.bg-error-bg{background-color:var(--color-error-bg)}.bg-info{background-color:var(--color-info)}.bg-info-bg{background-color:var(--color-info-bg)}.bg-primary,.bg-primary\\/5{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/5{background-color:color-mix(in oklab, var(--color-primary) 5%, transparent)}}.bg-primary\\/8{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/8{background-color:color-mix(in oklab, var(--color-primary) 8%, transparent)}}.bg-primary\\/10{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.bg-success{background-color:var(--color-success)}.bg-success-bg{background-color:var(--color-success-bg)}.bg-text-muted{background-color:var(--color-text-muted)}.bg-text-primary{background-color:var(--color-text-primary)}.bg-warning{background-color:var(--color-warning)}.bg-warning-bg{background-color:var(--color-warning-bg)}.object-cover{object-fit:cover}.p-0\\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-2xl{padding:var(--spacing-2xl)}.p-16{padding:calc(var(--spacing) * 16)}.p-lg{padding:var(--spacing-lg)}.p-md{padding:var(--spacing-md)}.p-sm{padding:var(--spacing-sm)}.p-xl{padding:var(--spacing-xl)}.p-xs{padding:var(--spacing-xs)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-lg{padding-inline:var(--spacing-lg)}.px-md{padding-inline:var(--spacing-md)}.px-sm{padding-inline:var(--spacing-sm)}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-2xl{padding-block:var(--spacing-2xl)}.py-lg{padding-block:var(--spacing-lg)}.py-md{padding-block:var(--spacing-md)}.py-sm{padding-block:var(--spacing-sm)}.py-xl{padding-block:var(--spacing-xl)}.py-xs{padding-block:var(--spacing-xs)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-14{padding-top:calc(var(--spacing) * 14)}.pt-xl{padding-top:var(--spacing-xl)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-11{padding-right:calc(var(--spacing) * 11)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-10{padding-left:calc(var(--spacing) * 10)}.pl-11{padding-left:calc(var(--spacing) * 11)}.pl-14{padding-left:calc(var(--spacing) * 14)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-body{font-size:var(--text-body);line-height:var(--tw-leading,var(--text-body--line-height))}.text-caption{font-size:var(--text-caption);line-height:var(--tw-leading,var(--text-caption--line-height))}.text-h1{font-size:var(--text-h1);line-height:var(--tw-leading,var(--text-h1--line-height))}.text-h2{font-size:var(--text-h2);line-height:var(--tw-leading,var(--text-h2--line-height))}.text-h3{font-size:var(--text-h3);line-height:var(--tw-leading,var(--text-h3--line-height))}.text-small{font-size:var(--text-small);line-height:var(--tw-leading,var(--text-small--line-height))}.leading-\\[1\\.2\\]{--tw-leading:1.2;line-height:1.2}.leading-\\[1\\.3\\]{--tw-leading:1.3;line-height:1.3}.leading-\\[1\\.4\\]{--tw-leading:1.4;line-height:1.4}.leading-\\[1\\.5\\]{--tw-leading:1.5;line-height:1.5}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.whitespace-nowrap{white-space:nowrap}.\\!text-white{color:var(--color-white)!important}.text-bg-primary{color:var(--color-bg-primary)}.text-epfl-canard{color:var(--color-epfl-canard)}.text-epfl-leman{color:var(--color-epfl-leman)}.text-epfl-red{color:var(--color-epfl-red)}.text-error{color:var(--color-error)}.text-info{color:var(--color-info)}.text-primary{color:var(--color-primary)}.text-success{color:var(--color-success)}.text-text-muted{color:var(--color-text-muted)}.text-text-primary{color:var(--color-text-primary)}.text-text-secondary{color:var(--color-text-secondary)}.text-warning{color:var(--color-warning)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.decoration-dotted{text-decoration-style:dotted}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-100{opacity:1}.\\!shadow-lg{--tw-shadow:0 4px 16px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.\\!shadow-sm{--tw-shadow:0 1px 2px var(--tw-shadow-color,#0000000f)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.shadow-lg{--tw-shadow:0 4px 16px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 2px 8px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 8px 32px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.\\!ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.\\!ring-epfl-canard{--tw-ring-color:var(--color-epfl-canard)!important}.\\!ring-primary{--tw-ring-color:var(--color-primary)!important}.transition-\\[width\\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.peer-checked\\:bg-primary:is(:where(.peer):checked~*){background-color:var(--color-primary)}.peer-focus-visible\\:ring-2:is(:where(.peer):focus-visible~*){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.peer-focus-visible\\:ring-primary:is(:where(.peer):focus-visible~*){--tw-ring-color:var(--color-primary)}.peer-focus-visible\\:ring-offset-2:is(:where(.peer):focus-visible~*){--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.peer-focus-visible\\:ring-offset-bg-primary:is(:where(.peer):focus-visible~*){--tw-ring-offset-color:var(--color-bg-primary)}.peer-disabled\\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.placeholder\\:text-text-muted::placeholder{color:var(--color-text-muted)}.after\\:absolute:after{content:var(--tw-content);position:absolute}.after\\:top-0\\.5:after{content:var(--tw-content);top:calc(var(--spacing) * .5)}.after\\:left-0\\.5:after{content:var(--tw-content);left:calc(var(--spacing) * .5)}.after\\:size-5:after{content:var(--tw-content);width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.after\\:rounded-full:after{content:var(--tw-content);border-radius:var(--radius-full)}.after\\:bg-white:after{content:var(--tw-content);background-color:var(--color-white)}.after\\:shadow-sm:after{content:var(--tw-content);--tw-shadow:0 1px 2px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.after\\:transition-transform:after{content:var(--tw-content);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\\:content-\\[\\'\\'\\]:after{--tw-content:"";content:var(--tw-content)}.peer-checked\\:after\\:translate-x-5:is(:where(.peer):checked~*):after{content:var(--tw-content);--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.last\\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.checked\\:border-\\[5px\\]:checked{border-style:var(--tw-border-style);border-width:5px}.checked\\:border-primary:checked{border-color:var(--color-primary)}.checked\\:bg-primary:checked{background-color:var(--color-primary)}.checked\\:bg-\\[url\\(\\'data\\:image\\/svg\\+xml\\,\\%3Csvg\\%20viewBox\\%3D\\%220\\%200\\%2016\\%2016\\%22\\%20fill\\%3D\\%22white\\%22\\%20xmlns\\%3D\\%22http\\%3A\\%2F\\%2Fwww\\.w3\\.org\\%2F2000\\%2Fsvg\\%22\\%3E\\%3Cpath\\%20d\\%3D\\%22M12\\.207\\%204\\.793a1\\%201\\%200\\%20010\\%201\\.414l-5\\%205a1\\%201\\%200\\%2001-1\\.414\\%200l-2-2a1\\%201\\%200\\%20011\\.414-1\\.414L6\\.5\\%209\\.086l4\\.293-4\\.293a1\\%201\\%200\\%20011\\.414\\%200z\\%22\\%2F\\%3E\\%3C\\%2Fsvg\\%3E\\'\\)\\]:checked{background-image:url(data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22white%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.207%204.793a1%201%200%20010%201.414l-5%205a1%201%200%2001-1.414%200l-2-2a1%201%200%20011.414-1.414L6.5%209.086l4.293-4.293a1%201%200%20011.414%200z%22%2F%3E%3C%2Fsvg%3E)}.checked\\:bg-center:checked{background-position:50%}.checked\\:bg-no-repeat:checked{background-repeat:no-repeat}.indeterminate\\:border-primary:indeterminate{border-color:var(--color-primary)}.indeterminate\\:bg-primary:indeterminate{background-color:var(--color-primary)}.indeterminate\\:bg-\\[url\\(\\'data\\:image\\/svg\\+xml\\,\\%3Csvg\\%20viewBox\\%3D\\%220\\%200\\%2016\\%2016\\%22\\%20fill\\%3D\\%22white\\%22\\%20xmlns\\%3D\\%22http\\%3A\\%2F\\%2Fwww\\.w3\\.org\\%2F2000\\%2Fsvg\\%22\\%3E\\%3Crect\\%20x\\%3D\\%223\\%22\\%20y\\%3D\\%227\\%22\\%20width\\%3D\\%2210\\%22\\%20height\\%3D\\%222\\%22\\%20rx\\%3D\\%221\\%22\\%2F\\%3E\\%3C\\%2Fsvg\\%3E\\'\\)\\]:indeterminate{background-image:url(data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22white%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20x%3D%223%22%20y%3D%227%22%20width%3D%2210%22%20height%3D%222%22%20rx%3D%221%22%2F%3E%3C%2Fsvg%3E)}.indeterminate\\:bg-center:indeterminate{background-position:50%}.indeterminate\\:bg-no-repeat:indeterminate{background-repeat:no-repeat}@media (hover:hover){.hover\\:border-border-strong:hover{border-color:var(--color-border-strong)}.hover\\:border-error:hover{border-color:var(--color-error)}.hover\\:border-primary:hover{border-color:var(--color-primary)}.hover\\:bg-bg-tertiary:hover,.hover\\:bg-bg-tertiary\\/70:hover{background-color:var(--color-bg-tertiary)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-bg-tertiary\\/70:hover{background-color:color-mix(in oklab, var(--color-bg-tertiary) 70%, transparent)}}.hover\\:bg-error-bg:hover{background-color:var(--color-error-bg)}.hover\\:bg-error\\/80:hover{background-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-error\\/80:hover{background-color:color-mix(in oklab, var(--color-error) 80%, transparent)}}.hover\\:bg-primary-hover:hover{background-color:var(--color-primary-hover)}.hover\\:text-text-primary:hover{color:var(--color-text-primary)}.hover\\:text-text-secondary:hover{color:var(--color-text-secondary)}.hover\\:opacity-90:hover{opacity:.9}}.focus\\:border-error:focus{border-color:var(--color-error)}.focus\\:border-primary:focus{border-color:var(--color-primary)}.focus\\:bg-bg-tertiary:focus{background-color:var(--color-bg-tertiary)}.focus\\:bg-error-bg:focus{background-color:var(--color-error-bg)}.focus\\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\\:ring-error:focus{--tw-ring-color:var(--color-error)}.focus\\:ring-primary:focus{--tw-ring-color:var(--color-primary)}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\\:ring-error:focus-visible{--tw-ring-color:var(--color-error)}.focus-visible\\:ring-primary:focus-visible{--tw-ring-color:var(--color-primary)}.focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\\:ring-offset-bg-primary:focus-visible{--tw-ring-offset-color:var(--color-bg-primary)}.focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:bg-bg-secondary:disabled{background-color:var(--color-bg-secondary)}.disabled\\:opacity-50:disabled{opacity:.5}@media (width>=40rem){.sm\\:col-span-2{grid-column:span 2/span 2}.sm\\:w-1\\/3{width:33.3333%}.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\\:flex-row{flex-direction:row}.sm\\:gap-lg{gap:var(--spacing-lg)}}@media (width>=48rem){.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=64rem){.lg\\:flex{display:flex}.lg\\:hidden{display:none}.lg\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\\:px-lg{padding-inline:var(--spacing-lg)}}.\\[\\&\\>svg\\]\\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\\[\\&\\>svg\\]\\:size-5>svg{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}}:root{--bg-primary:#fff;--bg-secondary:#f5f5f5;--bg-tertiary:#e6e6e6;--border-default:#d5d5d5;--border-strong:#c1c1c1;--text-primary:#212121;--text-secondary:#707070;--text-muted:#8e8e8e;--semantic-success:#1b874b;--semantic-success-bg:#e8f5e9;--semantic-warning:#d4860a;--semantic-warning-bg:#fff3e0;--semantic-error:#d32f2f;--semantic-error-bg:#ffebee;--semantic-info:#1976d2;--semantic-info-bg:#e3f2fd;--action-primary:#007480;--action-primary-hover:#004248}.dark{--bg-primary:#1a1a1a;--bg-secondary:#242424;--bg-tertiary:#2e2e2e;--border-default:#3a3a3a;--border-strong:#505050;--text-primary:#f0f0f0;--text-secondary:#a0a0a0;--text-muted:#707070;--semantic-success:#34d37a;--semantic-success-bg:#1a2e1a;--semantic-warning:#ffad33;--semantic-warning-bg:#2e2410;--semantic-error:#ff6b6b;--semantic-error-bg:#2e1515;--semantic-info:#64b5f6;--semantic-info-bg:#152538;--action-primary:#009ba6;--action-primary-hover:#007480;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 2px 8px #0006;--shadow-lg:0 4px 16px #00000080;--shadow-xl:0 8px 32px #0009}@keyframes slide-in{0%{opacity:0;transform:translate(1rem)}to{opacity:1;transform:translate(0)}}@keyframes dialog-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes floating-in{0%{opacity:0}to{opacity:1}}body{font-family:var(--font-sans);font-size:var(--text-body);line-height:var(--text-body--line-height);color:var(--color-text-primary);background-color:var(--color-bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-xl:36rem;--container-6xl:72rem;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--shadow-sm:0 1px 2px #0000000f;--shadow-md:0 2px 8px #00000014;--shadow-lg:0 4px 16px #0000001a;--shadow-xl:0 8px 32px #0000001f;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-epfl-red:red;--color-epfl-red-dark:#b51f1f;--color-epfl-leman:#00a79f;--color-epfl-canard:#007480;--color-epfl-canard-dark:#004248;--color-primary:var(--action-primary);--color-primary-hover:var(--action-primary-hover);--color-bg-primary:var(--bg-primary);--color-bg-secondary:var(--bg-secondary);--color-bg-tertiary:var(--bg-tertiary);--color-border:var(--border-default);--color-border-strong:var(--border-strong);--color-text-primary:var(--text-primary);--color-text-secondary:var(--text-secondary);--color-text-muted:var(--text-muted);--color-success:var(--semantic-success);--color-success-bg:var(--semantic-success-bg);--color-warning:var(--semantic-warning);--color-warning-bg:var(--semantic-warning-bg);--color-error:var(--semantic-error);--color-error-bg:var(--semantic-error-bg);--color-info:var(--semantic-info);--color-info-bg:var(--semantic-info-bg);--radius-full:9999px;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--spacing-xl:32px;--spacing-2xl:48px;--text-h1:2rem;--text-h1--line-height:1.2;--text-h2:1.5rem;--text-h2--line-height:1.3;--text-h3:1.25rem;--text-h3--line-height:1.4;--text-body:.9375rem;--text-body--line-height:1.5;--text-small:.8125rem;--text-small--line-height:1.5;--text-caption:.75rem;--text-caption--line-height:1.4}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.right-0{right:calc(var(--spacing) * 0)}.right-lg{right:var(--spacing-lg)}.bottom-lg{bottom:var(--spacing-lg)}.left-0{left:calc(var(--spacing) * 0)}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-lg{margin-top:var(--spacing-lg)}.mt-md{margin-top:var(--spacing-md)}.mt-xs{margin-top:var(--spacing-xs)}.mr-lg{margin-right:var(--spacing-lg)}.mr-sm{margin-right:var(--spacing-sm)}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-lg{margin-bottom:var(--spacing-lg)}.mb-md{margin-bottom:var(--spacing-md)}.mb-sm{margin-bottom:var(--spacing-sm)}.mb-xs{margin-bottom:var(--spacing-xs)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-14{width:calc(var(--spacing) * 14);height:calc(var(--spacing) * 14)}.size-16{width:calc(var(--spacing) * 16);height:calc(var(--spacing) * 16)}.size-20{width:calc(var(--spacing) * 20);height:calc(var(--spacing) * 20)}.size-full{width:100%;height:100%}.h-0\\.5{height:calc(var(--spacing) * .5)}.h-1\\.5{height:calc(var(--spacing) * 1.5)}.h-2\\.5{height:calc(var(--spacing) * 2.5)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-20{height:calc(var(--spacing) * 20)}.h-64{height:calc(var(--spacing) * 64)}.h-96{height:calc(var(--spacing) * 96)}.h-full{height:100%}.h-screen{height:100vh}.min-h-screen{min-height:100vh}.w-7{width:calc(var(--spacing) * 7)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-16{width:calc(var(--spacing) * 16)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-\\[4px\\]{width:4px}.w-\\[8px\\]{width:8px}.w-\\[16px\\]{width:16px}.w-\\[24px\\]{width:24px}.w-\\[32px\\]{width:32px}.w-\\[48px\\]{width:48px}.w-full{width:100%}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\\[24rem\\]{max-width:24rem}.max-w-\\[32rem\\]{max-width:32rem}.max-w-\\[42rem\\]{max-width:42rem}.max-w-\\[600px\\]{max-width:600px}.max-w-\\[var\\(--container-6xl\\)\\]{max-width:var(--container-6xl)}.max-w-\\[var\\(--container-md\\)\\]{max-width:var(--container-md)}.max-w-\\[var\\(--container-xl\\)\\]{max-width:var(--container-xl)}.max-w-\\[var\\(--container-xs\\)\\]{max-width:var(--container-xs)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--spacing-md)}.max-w-screen{max-width:100vw}.max-w-sm{max-width:var(--spacing-sm)}.max-w-xl{max-width:var(--spacing-xl)}.max-w-xs{max-width:var(--spacing-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-7{min-width:calc(var(--spacing) * 7)}.min-w-9{min-width:calc(var(--spacing) * 9)}.min-w-11{min-width:calc(var(--spacing) * 11)}.min-w-\\[10rem\\]{min-width:10rem}.min-w-\\[500px\\]{min-width:500px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.-rotate-90{rotate:-90deg}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-dialog-in{animation:.2s ease-out dialog-in}.animate-floating-in{animation:.15s ease-out floating-in}.animate-slide-in{animation:.25s ease-out slide-in}.animate-spin{animation:var(--animate-spin)}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2xl{gap:var(--spacing-2xl)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-lg{gap:var(--spacing-lg)}.gap-md{gap:var(--spacing-md)}.gap-px{gap:1px}.gap-sm{gap:var(--spacing-sm)}.gap-xl{gap:var(--spacing-xl)}.gap-xs{gap:var(--spacing-xs)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--color-border)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.\\!rounded-lg{border-radius:var(--radius-lg)!important}.\\!rounded-md{border-radius:var(--radius-md)!important}.\\!rounded-sm{border-radius:var(--radius-sm)!important}.rounded{border-radius:.25rem}.rounded-full{border-radius:var(--radius-full)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.\\!border{border-style:var(--tw-border-style)!important;border-width:1px!important}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.\\!border-border{border-color:var(--color-border)!important}.\\!border-epfl-canard{border-color:var(--color-epfl-canard)!important}.\\!border-error{border-color:var(--color-error)!important}.\\!border-primary{border-color:var(--color-primary)!important}.border-border{border-color:var(--color-border)}.border-border-strong{border-color:var(--color-border-strong)}.border-error,.border-error\\/30{border-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.border-error\\/30{border-color:color-mix(in oklab, var(--color-error) 30%, transparent)}}.border-info\\/30{border-color:var(--color-info)}@supports (color:color-mix(in lab, red, red)){.border-info\\/30{border-color:color-mix(in oklab, var(--color-info) 30%, transparent)}}.border-primary{border-color:var(--color-primary)}.border-success\\/30{border-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.border-success\\/30{border-color:color-mix(in oklab, var(--color-success) 30%, transparent)}}.border-transparent{border-color:#0000}.border-warning\\/30{border-color:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.border-warning\\/30{border-color:color-mix(in oklab, var(--color-warning) 30%, transparent)}}.\\!bg-bg-tertiary{background-color:var(--color-bg-tertiary)!important}.\\!bg-epfl-canard{background-color:var(--color-epfl-canard)!important}.\\!bg-primary{background-color:var(--color-primary)!important}.bg-bg-primary{background-color:var(--color-bg-primary)}.bg-bg-secondary{background-color:var(--color-bg-secondary)}.bg-bg-tertiary,.bg-bg-tertiary\\/50{background-color:var(--color-bg-tertiary)}@supports (color:color-mix(in lab, red, red)){.bg-bg-tertiary\\/50{background-color:color-mix(in oklab, var(--color-bg-tertiary) 50%, transparent)}}.bg-black\\/40{background-color:#0006}@supports (color:color-mix(in lab, red, red)){.bg-black\\/40{background-color:color-mix(in oklab, var(--color-black) 40%, transparent)}}.bg-black\\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-border{background-color:var(--color-border)}.bg-border-strong{background-color:var(--color-border-strong)}.bg-epfl-canard{background-color:var(--color-epfl-canard)}.bg-epfl-canard-dark{background-color:var(--color-epfl-canard-dark)}.bg-epfl-leman{background-color:var(--color-epfl-leman)}.bg-epfl-red{background-color:var(--color-epfl-red)}.bg-epfl-red-dark{background-color:var(--color-epfl-red-dark)}.bg-error{background-color:var(--color-error)}.bg-error-bg{background-color:var(--color-error-bg)}.bg-info{background-color:var(--color-info)}.bg-info-bg{background-color:var(--color-info-bg)}.bg-primary,.bg-primary\\/5{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/5{background-color:color-mix(in oklab, var(--color-primary) 5%, transparent)}}.bg-primary\\/8{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/8{background-color:color-mix(in oklab, var(--color-primary) 8%, transparent)}}.bg-primary\\/10{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.bg-success{background-color:var(--color-success)}.bg-success-bg{background-color:var(--color-success-bg)}.bg-text-muted{background-color:var(--color-text-muted)}.bg-text-primary{background-color:var(--color-text-primary)}.bg-warning{background-color:var(--color-warning)}.bg-warning-bg{background-color:var(--color-warning-bg)}.object-cover{object-fit:cover}.p-0\\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-2xl{padding:var(--spacing-2xl)}.p-16{padding:calc(var(--spacing) * 16)}.p-lg{padding:var(--spacing-lg)}.p-md{padding:var(--spacing-md)}.p-sm{padding:var(--spacing-sm)}.p-xl{padding:var(--spacing-xl)}.p-xs{padding:var(--spacing-xs)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-lg{padding-inline:var(--spacing-lg)}.px-md{padding-inline:var(--spacing-md)}.px-sm{padding-inline:var(--spacing-sm)}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-2xl{padding-block:var(--spacing-2xl)}.py-lg{padding-block:var(--spacing-lg)}.py-md{padding-block:var(--spacing-md)}.py-sm{padding-block:var(--spacing-sm)}.py-xl{padding-block:var(--spacing-xl)}.py-xs{padding-block:var(--spacing-xs)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-14{padding-top:calc(var(--spacing) * 14)}.pt-xl{padding-top:var(--spacing-xl)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-11{padding-right:calc(var(--spacing) * 11)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-10{padding-left:calc(var(--spacing) * 10)}.pl-11{padding-left:calc(var(--spacing) * 11)}.pl-14{padding-left:calc(var(--spacing) * 14)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-body{font-size:var(--text-body);line-height:var(--tw-leading,var(--text-body--line-height))}.text-caption{font-size:var(--text-caption);line-height:var(--tw-leading,var(--text-caption--line-height))}.text-h1{font-size:var(--text-h1);line-height:var(--tw-leading,var(--text-h1--line-height))}.text-h2{font-size:var(--text-h2);line-height:var(--tw-leading,var(--text-h2--line-height))}.text-h3{font-size:var(--text-h3);line-height:var(--tw-leading,var(--text-h3--line-height))}.text-small{font-size:var(--text-small);line-height:var(--tw-leading,var(--text-small--line-height))}.leading-\\[1\\.2\\]{--tw-leading:1.2;line-height:1.2}.leading-\\[1\\.3\\]{--tw-leading:1.3;line-height:1.3}.leading-\\[1\\.4\\]{--tw-leading:1.4;line-height:1.4}.leading-\\[1\\.5\\]{--tw-leading:1.5;line-height:1.5}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.whitespace-nowrap{white-space:nowrap}.\\!text-white{color:var(--color-white)!important}.text-bg-primary{color:var(--color-bg-primary)}.text-epfl-canard{color:var(--color-epfl-canard)}.text-epfl-leman{color:var(--color-epfl-leman)}.text-epfl-red{color:var(--color-epfl-red)}.text-error{color:var(--color-error)}.text-info{color:var(--color-info)}.text-primary{color:var(--color-primary)}.text-success{color:var(--color-success)}.text-text-muted{color:var(--color-text-muted)}.text-text-primary{color:var(--color-text-primary)}.text-text-secondary{color:var(--color-text-secondary)}.text-warning{color:var(--color-warning)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.decoration-dotted{text-decoration-style:dotted}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-100{opacity:1}.\\!shadow-lg{--tw-shadow:0 4px 16px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.\\!shadow-sm{--tw-shadow:0 1px 2px var(--tw-shadow-color,#0000000f)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.shadow-lg{--tw-shadow:0 4px 16px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 2px 8px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 8px 32px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.\\!ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.\\!ring-epfl-canard{--tw-ring-color:var(--color-epfl-canard)!important}.\\!ring-primary{--tw-ring-color:var(--color-primary)!important}.transition-\\[width\\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.peer-checked\\:bg-primary:is(:where(.peer):checked~*){background-color:var(--color-primary)}.peer-focus-visible\\:ring-2:is(:where(.peer):focus-visible~*){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.peer-focus-visible\\:ring-primary:is(:where(.peer):focus-visible~*){--tw-ring-color:var(--color-primary)}.peer-focus-visible\\:ring-offset-2:is(:where(.peer):focus-visible~*){--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.peer-focus-visible\\:ring-offset-bg-primary:is(:where(.peer):focus-visible~*){--tw-ring-offset-color:var(--color-bg-primary)}.peer-disabled\\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.placeholder\\:text-text-muted::placeholder{color:var(--color-text-muted)}.after\\:absolute:after{content:var(--tw-content);position:absolute}.after\\:top-0\\.5:after{content:var(--tw-content);top:calc(var(--spacing) * .5)}.after\\:left-0\\.5:after{content:var(--tw-content);left:calc(var(--spacing) * .5)}.after\\:size-5:after{content:var(--tw-content);width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.after\\:rounded-full:after{content:var(--tw-content);border-radius:var(--radius-full)}.after\\:bg-white:after{content:var(--tw-content);background-color:var(--color-white)}.after\\:shadow-sm:after{content:var(--tw-content);--tw-shadow:0 1px 2px var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.after\\:transition-transform:after{content:var(--tw-content);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\\:content-\\[\\'\\'\\]:after{--tw-content:"";content:var(--tw-content)}.peer-checked\\:after\\:translate-x-5:is(:where(.peer):checked~*):after{content:var(--tw-content);--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.last\\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.checked\\:border-\\[5px\\]:checked{border-style:var(--tw-border-style);border-width:5px}.checked\\:border-primary:checked{border-color:var(--color-primary)}.checked\\:bg-primary:checked{background-color:var(--color-primary)}.checked\\:bg-\\[url\\(\\'data\\:image\\/svg\\+xml\\,\\%3Csvg\\%20viewBox\\%3D\\%220\\%200\\%2016\\%2016\\%22\\%20fill\\%3D\\%22white\\%22\\%20xmlns\\%3D\\%22http\\%3A\\%2F\\%2Fwww\\.w3\\.org\\%2F2000\\%2Fsvg\\%22\\%3E\\%3Cpath\\%20d\\%3D\\%22M12\\.207\\%204\\.793a1\\%201\\%200\\%20010\\%201\\.414l-5\\%205a1\\%201\\%200\\%2001-1\\.414\\%200l-2-2a1\\%201\\%200\\%20011\\.414-1\\.414L6\\.5\\%209\\.086l4\\.293-4\\.293a1\\%201\\%200\\%20011\\.414\\%200z\\%22\\%2F\\%3E\\%3C\\%2Fsvg\\%3E\\'\\)\\]:checked{background-image:url(data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22white%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.207%204.793a1%201%200%20010%201.414l-5%205a1%201%200%2001-1.414%200l-2-2a1%201%200%20011.414-1.414L6.5%209.086l4.293-4.293a1%201%200%20011.414%200z%22%2F%3E%3C%2Fsvg%3E)}.checked\\:bg-center:checked{background-position:50%}.checked\\:bg-no-repeat:checked{background-repeat:no-repeat}.indeterminate\\:border-primary:indeterminate{border-color:var(--color-primary)}.indeterminate\\:bg-primary:indeterminate{background-color:var(--color-primary)}.indeterminate\\:bg-\\[url\\(\\'data\\:image\\/svg\\+xml\\,\\%3Csvg\\%20viewBox\\%3D\\%220\\%200\\%2016\\%2016\\%22\\%20fill\\%3D\\%22white\\%22\\%20xmlns\\%3D\\%22http\\%3A\\%2F\\%2Fwww\\.w3\\.org\\%2F2000\\%2Fsvg\\%22\\%3E\\%3Crect\\%20x\\%3D\\%223\\%22\\%20y\\%3D\\%227\\%22\\%20width\\%3D\\%2210\\%22\\%20height\\%3D\\%222\\%22\\%20rx\\%3D\\%221\\%22\\%2F\\%3E\\%3C\\%2Fsvg\\%3E\\'\\)\\]:indeterminate{background-image:url(data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22white%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20x%3D%223%22%20y%3D%227%22%20width%3D%2210%22%20height%3D%222%22%20rx%3D%221%22%2F%3E%3C%2Fsvg%3E)}.indeterminate\\:bg-center:indeterminate{background-position:50%}.indeterminate\\:bg-no-repeat:indeterminate{background-repeat:no-repeat}@media (hover:hover){.hover\\:border-border-strong:hover{border-color:var(--color-border-strong)}.hover\\:border-error:hover{border-color:var(--color-error)}.hover\\:border-primary:hover{border-color:var(--color-primary)}.hover\\:bg-bg-tertiary:hover,.hover\\:bg-bg-tertiary\\/70:hover{background-color:var(--color-bg-tertiary)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-bg-tertiary\\/70:hover{background-color:color-mix(in oklab, var(--color-bg-tertiary) 70%, transparent)}}.hover\\:bg-error-bg:hover{background-color:var(--color-error-bg)}.hover\\:bg-error\\/80:hover{background-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-error\\/80:hover{background-color:color-mix(in oklab, var(--color-error) 80%, transparent)}}.hover\\:bg-primary-hover:hover{background-color:var(--color-primary-hover)}.hover\\:text-text-primary:hover{color:var(--color-text-primary)}.hover\\:text-text-secondary:hover{color:var(--color-text-secondary)}.hover\\:opacity-90:hover{opacity:.9}}.focus\\:border-error:focus{border-color:var(--color-error)}.focus\\:border-primary:focus{border-color:var(--color-primary)}.focus\\:bg-bg-tertiary:focus{background-color:var(--color-bg-tertiary)}.focus\\:bg-error-bg:focus{background-color:var(--color-error-bg)}.focus\\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\\:ring-error:focus{--tw-ring-color:var(--color-error)}.focus\\:ring-primary:focus{--tw-ring-color:var(--color-primary)}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\\:ring-epfl-canard:focus-visible{--tw-ring-color:var(--color-epfl-canard)}.focus-visible\\:ring-error:focus-visible{--tw-ring-color:var(--color-error)}.focus-visible\\:ring-primary:focus-visible{--tw-ring-color:var(--color-primary)}.focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\\:ring-offset-bg-primary:focus-visible{--tw-ring-offset-color:var(--color-bg-primary)}.focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:bg-bg-secondary:disabled{background-color:var(--color-bg-secondary)}.disabled\\:opacity-50:disabled{opacity:.5}@media (width>=40rem){.sm\\:col-span-2{grid-column:span 2/span 2}.sm\\:w-1\\/3{width:33.3333%}.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\\:flex-row{flex-direction:row}.sm\\:gap-lg{gap:var(--spacing-lg)}}@media (width>=48rem){.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=64rem){.lg\\:flex{display:flex}.lg\\:hidden{display:none}.lg\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\\:px-lg{padding-inline:var(--spacing-lg)}}.\\[\\&\\>svg\\]\\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\\[\\&\\>svg\\]\\:size-5>svg{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}}:root{--bg-primary:#fff;--bg-secondary:#f5f5f5;--bg-tertiary:#e6e6e6;--border-default:#d5d5d5;--border-strong:#c1c1c1;--text-primary:#212121;--text-secondary:#707070;--text-muted:#8e8e8e;--semantic-success:#1b874b;--semantic-success-bg:#e8f5e9;--semantic-warning:#d4860a;--semantic-warning-bg:#fff3e0;--semantic-error:#d32f2f;--semantic-error-bg:#ffebee;--semantic-info:#1976d2;--semantic-info-bg:#e3f2fd;--action-primary:#007480;--action-primary-hover:#004248}.dark{--bg-primary:#1a1a1a;--bg-secondary:#242424;--bg-tertiary:#2e2e2e;--border-default:#3a3a3a;--border-strong:#505050;--text-primary:#f0f0f0;--text-secondary:#a0a0a0;--text-muted:#707070;--semantic-success:#34d37a;--semantic-success-bg:#1a2e1a;--semantic-warning:#ffad33;--semantic-warning-bg:#2e2410;--semantic-error:#ff6b6b;--semantic-error-bg:#2e1515;--semantic-info:#64b5f6;--semantic-info-bg:#152538;--action-primary:#009ba6;--action-primary-hover:#007480;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 2px 8px #0006;--shadow-lg:0 4px 16px #00000080;--shadow-xl:0 8px 32px #0009}@keyframes slide-in{0%{opacity:0;transform:translate(1rem)}to{opacity:1;transform:translate(0)}}@keyframes dialog-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes floating-in{0%{opacity:0}to{opacity:1}}body{font-family:var(--font-sans);font-size:var(--text-body);line-height:var(--text-body--line-height);color:var(--color-text-primary);background-color:var(--color-bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}
3
3
  /*$vite$:1*/`)),document.head.appendChild(e)}}catch(e){console.error(`vite-plugin-css-injected-by-js`,e)}})();import { createContext as e, forwardRef as t, useCallback as n, useContext as r, useEffect as i, useId as a, useMemo as o, useRef as s, useState as c, useSyncExternalStore as l } from "react";
4
4
  import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
5
- import { CheckCircleFill as p, ChevronDown as m, CloudArrowUp as h, ExclamationTriangleFill as g, InfoCircleFill as _, List as v, MoonFill as y, SortAlphaDown as b, SortAlphaDownAlt as x, SortDown as S, SortNumericDown as C, SortNumericDownAlt as w, SunFill as T, X as E, XCircleFill as D, XLg as O } from "react-bootstrap-icons";
6
- import k from "react-select";
7
- import { FloatingFocusManager as A, FloatingPortal as j, arrow as ee, autoUpdate as M, flip as N, offset as P, shift as F, useClick as te, useDismiss as I, useFloating as L, useFocus as ne, useHover as re, useInteractions as R, useListNavigation as ie, useRole as z } from "@floating-ui/react";
8
- import { useTranslation as B } from "react-i18next";
9
- import { createPortal as ae } from "react-dom";
5
+ import { CheckCircleFill as p, ChevronBarLeft as m, ChevronBarRight as h, ChevronDown as g, ChevronLeft as _, ChevronRight as v, CloudArrowUp as y, ExclamationTriangleFill as b, InfoCircleFill as x, List as S, MoonFill as C, SortAlphaDown as w, SortAlphaDownAlt as T, SortDown as E, SortNumericDown as D, SortNumericDownAlt as O, SunFill as k, X as A, XCircleFill as j, XLg as M } from "react-bootstrap-icons";
6
+ import { useTranslation as N } from "react-i18next";
7
+ import ee from "react-select";
8
+ import { FloatingFocusManager as te, FloatingPortal as P, arrow as ne, autoUpdate as F, flip as I, offset as L, shift as R, useClick as z, useDismiss as B, useFloating as V, useFocus as re, useHover as ie, useInteractions as H, useListNavigation as ae, useRole as U } from "@floating-ui/react";
9
+ import { createPortal as oe } from "react-dom";
10
10
  //#region src/components/ui/Avatar.tsx
11
- var oe = {
11
+ var se = {
12
12
  sm: "size-8 text-caption",
13
13
  md: "size-10 text-small",
14
14
  lg: "size-14 text-body"
15
15
  };
16
- function se(e) {
16
+ function ce(e) {
17
17
  let t = e.trim().split(/\s+/);
18
18
  return t.length === 0 ? "?" : t.length === 1 ? t[0][0].toUpperCase() : (t[0][0] + t[t.length - 1][0]).toUpperCase();
19
19
  }
20
- function ce({ src: e, name: t, size: n = "md", alt: r, className: i = "", ...a }) {
20
+ function le({ src: e, name: t, size: n = "md", alt: r, className: i = "", ...a }) {
21
21
  let [o, s] = c(!1), l = !!e && !o;
22
22
  return /* @__PURE__ */ d("span", {
23
23
  role: "img",
@@ -25,7 +25,7 @@ function ce({ src: e, name: t, size: n = "md", alt: r, className: i = "", ...a }
25
25
  className: [
26
26
  "inline-flex items-center justify-center rounded-full overflow-hidden",
27
27
  "bg-primary text-white font-semibold select-none shrink-0",
28
- oe[n],
28
+ se[n],
29
29
  i
30
30
  ].join(" "),
31
31
  ...a,
@@ -36,35 +36,35 @@ function ce({ src: e, name: t, size: n = "md", alt: r, className: i = "", ...a }
36
36
  onError: () => s(!0)
37
37
  }) : /* @__PURE__ */ d("span", {
38
38
  "aria-hidden": "true",
39
- children: se(t)
39
+ children: ce(t)
40
40
  })
41
41
  });
42
42
  }
43
43
  //#endregion
44
44
  //#region src/components/ui/Badge.tsx
45
- var le = {
45
+ var ue = {
46
46
  default: "bg-bg-tertiary text-text-primary",
47
47
  success: "bg-success-bg text-success",
48
48
  warning: "bg-warning-bg text-warning",
49
49
  error: "bg-error-bg text-error",
50
50
  info: "bg-info-bg text-info"
51
- }, ue = {
51
+ }, de = {
52
52
  default: "bg-text-muted",
53
53
  success: "bg-success",
54
54
  warning: "bg-warning",
55
55
  error: "bg-error",
56
56
  info: "bg-info"
57
57
  };
58
- function de({ color: e = "default", dot: t, className: n = "", children: r, ...i }) {
58
+ function fe({ color: e = "default", dot: t, className: n = "", children: r, ...i }) {
59
59
  return t ? /* @__PURE__ */ d("span", {
60
60
  role: "status",
61
- className: `inline-block size-2.5 rounded-full ${ue[e]} ${n}`,
61
+ className: `inline-block size-2.5 rounded-full ${de[e]} ${n}`,
62
62
  ...i
63
63
  }) : /* @__PURE__ */ d("span", {
64
64
  className: [
65
65
  "inline-flex items-center rounded-sm px-2 py-0.5",
66
66
  "text-caption font-medium leading-none",
67
- le[e],
67
+ ue[e],
68
68
  n
69
69
  ].join(" "),
70
70
  ...i,
@@ -73,17 +73,17 @@ function de({ color: e = "default", dot: t, className: n = "", children: r, ...i
73
73
  }
74
74
  //#endregion
75
75
  //#region src/components/ui/Spinner.tsx
76
- var fe = {
76
+ var pe = {
77
77
  sm: "size-4",
78
78
  md: "size-6",
79
79
  lg: "size-8"
80
80
  };
81
- function V({ size: e = "md", className: t = "", ...n }) {
81
+ function W({ size: e = "md", className: t = "", ...n }) {
82
82
  return /* @__PURE__ */ f("svg", {
83
83
  viewBox: "0 0 24 24",
84
84
  fill: "none",
85
85
  xmlns: "http://www.w3.org/2000/svg",
86
- className: `animate-spin ${fe[e]} ${t}`,
86
+ className: `animate-spin ${pe[e]} ${t}`,
87
87
  role: "status",
88
88
  "aria-label": "Loading",
89
89
  ...n,
@@ -103,20 +103,20 @@ function V({ size: e = "md", className: t = "", ...n }) {
103
103
  }
104
104
  //#endregion
105
105
  //#region src/components/ui/Button.tsx
106
- var pe = {
106
+ var me = {
107
107
  primary: "bg-primary text-white hover:bg-primary-hover focus-visible:ring-primary",
108
108
  secondary: "border border-border text-text-primary bg-bg-primary hover:bg-bg-tertiary focus-visible:ring-primary",
109
109
  ghost: "text-text-primary hover:bg-bg-tertiary focus-visible:ring-primary",
110
110
  danger: "bg-error text-white hover:opacity-90 focus-visible:ring-error"
111
- }, me = {
111
+ }, he = {
112
112
  sm: "text-small px-3 py-1 gap-1.5",
113
113
  md: "text-body px-4 py-2 gap-2",
114
114
  lg: "text-body px-5 py-2.5 gap-2"
115
- }, he = {
115
+ }, ge = {
116
116
  sm: "sm",
117
117
  md: "sm",
118
118
  lg: "md"
119
- }, ge = t(function({ variant: e = "primary", size: t = "md", loading: n = !1, disabled: r, iconLeft: i, iconRight: a, className: o = "", children: s, ...c }, l) {
119
+ }, _e = t(function({ variant: e = "primary", size: t = "md", loading: n = !1, disabled: r, iconLeft: i, iconRight: a, className: o = "", children: s, ...c }, l) {
120
120
  let u = r || n;
121
121
  return /* @__PURE__ */ f("button", {
122
122
  ref: l,
@@ -127,31 +127,31 @@ var pe = {
127
127
  "inline-flex items-center justify-center font-medium rounded-md",
128
128
  "transition-colors duration-150 cursor-pointer",
129
129
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",
130
- pe[e],
131
- me[t],
130
+ me[e],
131
+ he[t],
132
132
  u && "opacity-50 pointer-events-none",
133
133
  o
134
134
  ].filter(Boolean).join(" "),
135
135
  ...c,
136
136
  children: [
137
- n ? /* @__PURE__ */ d(V, {
138
- size: he[t],
137
+ n ? /* @__PURE__ */ d(W, {
138
+ size: ge[t],
139
139
  "aria-hidden": "true"
140
140
  }) : i,
141
141
  s,
142
142
  !n && a
143
143
  ]
144
144
  });
145
- }), _e = {
145
+ }), ve = {
146
146
  primary: "bg-primary text-white hover:bg-primary-hover focus-visible:ring-primary",
147
147
  secondary: "border border-border text-text-primary bg-bg-primary hover:bg-bg-tertiary focus-visible:ring-primary",
148
148
  ghost: "text-text-primary hover:bg-bg-tertiary focus-visible:ring-primary",
149
149
  danger: "bg-error text-white hover:opacity-90 focus-visible:ring-error"
150
- }, ve = {
150
+ }, ye = {
151
151
  sm: "size-7 text-small",
152
152
  md: "size-9 text-body",
153
153
  lg: "size-11 text-body"
154
- }, H = t(function({ variant: e = "ghost", size: t = "md", loading: n = !1, disabled: r, icon: i, className: a = "", ...o }, s) {
154
+ }, G = t(function({ variant: e = "ghost", size: t = "md", loading: n = !1, disabled: r, icon: i, className: a = "", ...o }, s) {
155
155
  let c = r || n;
156
156
  return /* @__PURE__ */ d("button", {
157
157
  ref: s,
@@ -162,29 +162,135 @@ var pe = {
162
162
  "inline-flex items-center justify-center rounded-md",
163
163
  "transition-colors duration-150 cursor-pointer",
164
164
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",
165
- _e[e],
166
- ve[t],
165
+ ve[e],
166
+ ye[t],
167
167
  c && "opacity-50 pointer-events-none",
168
168
  a
169
169
  ].filter(Boolean).join(" "),
170
170
  ...o,
171
- children: n ? /* @__PURE__ */ d(V, {
171
+ children: n ? /* @__PURE__ */ d(W, {
172
172
  size: "sm",
173
173
  "aria-hidden": "true"
174
174
  }) : i
175
175
  });
176
+ }), K = {
177
+ sm: "h-7 min-w-7 px-1.5 text-small",
178
+ md: "h-9 min-w-9 px-2 text-body",
179
+ lg: "h-11 min-w-11 px-3 text-body"
180
+ }, be = {
181
+ sm: 14,
182
+ md: 16,
183
+ lg: 18
184
+ };
185
+ function xe(e, t, n, r) {
186
+ if (t <= r * 2 + n * 2 + 3) return Array.from({ length: t }, (e, t) => t + 1);
187
+ let i = Array.from({ length: r }, (e, t) => t + 1), a = Array.from({ length: r }, (e, n) => t - r + 1 + n), o = Math.max(r + 2, e - n), s = Math.min(t - r - 1, e + n), c = o > r + 2, l = s < t - r - 1, u = [];
188
+ if (u.push(...i), c) u.push("ellipsis-start");
189
+ else for (let e = r + 1; e < o; e++) u.push(e);
190
+ for (let e = o; e <= s; e++) u.push(e);
191
+ if (l) u.push("ellipsis-end");
192
+ else for (let e = s + 1; e <= t - r; e++) u.push(e);
193
+ return u.push(...a), u;
194
+ }
195
+ var Se = t(function({ totalPages: e, page: t, defaultPage: r = 1, onChange: i, siblingCount: a = 1, boundaryCount: o = 1, showFirstLast: s = !1, size: l = "md", disabled: u = !1, className: p = "", ...g }, y) {
196
+ let { t: b } = N(), x = t !== void 0, [S, C] = c(r), w = Math.min(Math.max(x ? t : S, 1), e), T = n((t) => {
197
+ let n = Math.min(Math.max(t, 1), e);
198
+ x || C(n), i?.(n);
199
+ }, [
200
+ x,
201
+ i,
202
+ e
203
+ ]), E = xe(w, e, a, o), D = be[l], O = w <= 1, k = w >= e, A = [
204
+ "inline-flex items-center justify-center rounded-md font-medium",
205
+ "transition-colors duration-150 cursor-pointer",
206
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-epfl-canard",
207
+ K[l]
208
+ ].join(" "), j = (e) => [A, e ? "bg-epfl-canard text-white" : "text-text-primary hover:bg-bg-tertiary"].filter(Boolean).join(" "), M = (e) => [
209
+ A,
210
+ "text-text-secondary hover:bg-bg-tertiary",
211
+ (u || e) && "opacity-40 pointer-events-none"
212
+ ].filter(Boolean).join(" ");
213
+ return e <= 0 ? null : /* @__PURE__ */ f("nav", {
214
+ ref: y,
215
+ "aria-label": b("common.pagination"),
216
+ className: ["inline-flex items-center gap-1", p].filter(Boolean).join(" "),
217
+ ...g,
218
+ children: [
219
+ s && /* @__PURE__ */ d("button", {
220
+ type: "button",
221
+ "aria-label": b("common.first"),
222
+ disabled: u || O,
223
+ className: M(O),
224
+ onClick: () => T(1),
225
+ children: /* @__PURE__ */ d(m, {
226
+ size: D,
227
+ "aria-hidden": !0
228
+ })
229
+ }),
230
+ /* @__PURE__ */ d("button", {
231
+ type: "button",
232
+ "aria-label": b("common.previous"),
233
+ disabled: u || O,
234
+ className: M(O),
235
+ onClick: () => T(w - 1),
236
+ children: /* @__PURE__ */ d(_, {
237
+ size: D,
238
+ "aria-hidden": !0
239
+ })
240
+ }),
241
+ E.map((e, t) => {
242
+ if (typeof e == "string") return /* @__PURE__ */ d("span", {
243
+ "aria-hidden": !0,
244
+ className: ["inline-flex items-center justify-center select-none text-text-secondary", K[l]].join(" "),
245
+ children: "…"
246
+ }, e);
247
+ let n = e === w;
248
+ return /* @__PURE__ */ d("button", {
249
+ type: "button",
250
+ "aria-current": n ? "page" : void 0,
251
+ "aria-label": b("common.goToPage", { page: e }),
252
+ disabled: u,
253
+ className: [j(n), u && "opacity-40 pointer-events-none"].filter(Boolean).join(" "),
254
+ onClick: () => T(e),
255
+ children: e
256
+ }, e);
257
+ }),
258
+ /* @__PURE__ */ d("button", {
259
+ type: "button",
260
+ "aria-label": b("common.next"),
261
+ disabled: u || k,
262
+ className: M(k),
263
+ onClick: () => T(w + 1),
264
+ children: /* @__PURE__ */ d(v, {
265
+ size: D,
266
+ "aria-hidden": !0
267
+ })
268
+ }),
269
+ s && /* @__PURE__ */ d("button", {
270
+ type: "button",
271
+ "aria-label": b("common.last"),
272
+ disabled: u || k,
273
+ className: M(k),
274
+ onClick: () => T(e),
275
+ children: /* @__PURE__ */ d(h, {
276
+ size: D,
277
+ "aria-hidden": !0
278
+ })
279
+ })
280
+ ]
281
+ });
176
282
  });
177
283
  //#endregion
178
284
  //#region src/components/ui/FileUpload.tsx
179
- function ye(e) {
285
+ function Ce(e) {
180
286
  return e < 1024 ? `${e} B` : e < 1024 * 1024 ? `${(e / 1024).toFixed(1)} KB` : `${(e / (1024 * 1024)).toFixed(1)} MB`;
181
287
  }
182
- function be({ accept: e, multiple: t = !1, maxSize: r, onFilesSelected: i, onReject: a, disabled: o = !1, label: l = "Drop files here or click to browse", helperText: u, error: p, illustration: m, className: g = "" }) {
183
- let [_, v] = c(!1), [y, b] = c([]), x = s(null), S = !!p, C = n((e) => {
288
+ function we({ accept: e, multiple: t = !1, maxSize: r, onFilesSelected: i, onReject: a, disabled: o = !1, label: l = "Drop files here or click to browse", helperText: u, error: p, illustration: m, className: h = "" }) {
289
+ let [g, _] = c(!1), [v, b] = c([]), x = s(null), S = !!p, C = n((e) => {
184
290
  let n = Array.from(e), o = [], s = [];
185
291
  for (let e of n) r && e.size > r ? s.push(e) : o.push(e);
186
292
  if (o.length > 0) {
187
- let e = t ? [...y, ...o] : o.slice(0, 1);
293
+ let e = t ? [...v, ...o] : o.slice(0, 1);
188
294
  b(e), i?.(e);
189
295
  }
190
296
  s.length > 0 && a?.(s);
@@ -193,45 +299,45 @@ function be({ accept: e, multiple: t = !1, maxSize: r, onFilesSelected: i, onRej
193
299
  t,
194
300
  i,
195
301
  a,
196
- y
302
+ v
197
303
  ]), w = n((e) => {
198
- e.preventDefault(), o || v(!0);
304
+ e.preventDefault(), o || _(!0);
199
305
  }, [o]), T = n((e) => {
200
- e.preventDefault(), v(!1);
201
- }, []), D = n((e) => {
202
- e.preventDefault(), v(!1), !(o || !e.dataTransfer.files.length) && C(e.dataTransfer.files);
203
- }, [o, C]), O = n((e) => {
306
+ e.preventDefault(), _(!1);
307
+ }, []), E = n((e) => {
308
+ e.preventDefault(), _(!1), !(o || !e.dataTransfer.files.length) && C(e.dataTransfer.files);
309
+ }, [o, C]), D = n((e) => {
204
310
  e.target.files?.length && C(e.target.files);
205
- }, [C]), k = n(() => {
311
+ }, [C]), O = n(() => {
206
312
  o || x.current?.click();
207
- }, [o]), A = n((e) => {
313
+ }, [o]), k = n((e) => {
208
314
  !o && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), x.current?.click());
209
315
  }, [o]), j = n((e) => {
210
- let t = y.filter((t, n) => n !== e);
316
+ let t = v.filter((t, n) => n !== e);
211
317
  b(t), i?.(t);
212
- }, [y, i]);
318
+ }, [v, i]);
213
319
  return /* @__PURE__ */ f("div", {
214
- className: `flex flex-col gap-1.5 ${g}`,
320
+ className: `flex flex-col gap-1.5 ${h}`,
215
321
  children: [
216
322
  /* @__PURE__ */ f("div", {
217
323
  role: "button",
218
324
  tabIndex: o ? -1 : 0,
219
- onClick: k,
220
- onKeyDown: A,
325
+ onClick: O,
326
+ onKeyDown: k,
221
327
  onDragOver: w,
222
328
  onDragLeave: T,
223
- onDrop: D,
329
+ onDrop: E,
224
330
  className: [
225
331
  "flex flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed p-lg",
226
332
  "transition-colors cursor-pointer select-none",
227
333
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2",
228
- o ? "opacity-50 pointer-events-none bg-bg-secondary" : _ ? "border-primary bg-primary/5" : S ? "border-error hover:border-error bg-bg-primary" : "border-border hover:border-primary bg-bg-primary"
334
+ o ? "opacity-50 pointer-events-none bg-bg-secondary" : g ? "border-primary bg-primary/5" : S ? "border-error hover:border-error bg-bg-primary" : "border-border hover:border-primary bg-bg-primary"
229
335
  ].filter(Boolean).join(" "),
230
336
  "aria-disabled": o,
231
337
  children: [
232
- m ?? /* @__PURE__ */ d(h, {
338
+ m ?? /* @__PURE__ */ d(y, {
233
339
  size: 32,
234
- className: _ ? "text-primary" : "text-text-muted",
340
+ className: g ? "text-primary" : "text-text-muted",
235
341
  "aria-hidden": !0
236
342
  }),
237
343
  /* @__PURE__ */ d("span", {
@@ -249,7 +355,7 @@ function be({ accept: e, multiple: t = !1, maxSize: r, onFilesSelected: i, onRej
249
355
  type: "file",
250
356
  accept: e,
251
357
  multiple: t,
252
- onChange: O,
358
+ onChange: D,
253
359
  className: "hidden",
254
360
  tabIndex: -1,
255
361
  "aria-hidden": !0
@@ -258,9 +364,9 @@ function be({ accept: e, multiple: t = !1, maxSize: r, onFilesSelected: i, onRej
258
364
  className: "text-caption text-error",
259
365
  children: p
260
366
  }),
261
- y.length > 0 && /* @__PURE__ */ d("ul", {
367
+ v.length > 0 && /* @__PURE__ */ d("ul", {
262
368
  className: "flex flex-col gap-1 mt-1",
263
- children: y.map((e, t) => /* @__PURE__ */ f("li", {
369
+ children: v.map((e, t) => /* @__PURE__ */ f("li", {
264
370
  className: "flex items-center gap-2 rounded-md bg-bg-secondary px-3 py-1.5 text-small text-text-primary",
265
371
  children: [
266
372
  /* @__PURE__ */ d("span", {
@@ -269,7 +375,7 @@ function be({ accept: e, multiple: t = !1, maxSize: r, onFilesSelected: i, onRej
269
375
  }),
270
376
  /* @__PURE__ */ d("span", {
271
377
  className: "shrink-0 text-text-secondary",
272
- children: ye(e.size)
378
+ children: Ce(e.size)
273
379
  }),
274
380
  /* @__PURE__ */ d("button", {
275
381
  type: "button",
@@ -278,7 +384,7 @@ function be({ accept: e, multiple: t = !1, maxSize: r, onFilesSelected: i, onRej
278
384
  },
279
385
  className: "shrink-0 p-0.5 rounded-sm text-text-secondary hover:text-text-primary hover:bg-bg-tertiary transition-colors cursor-pointer",
280
386
  "aria-label": `Remove ${e.name}`,
281
- children: /* @__PURE__ */ d(E, { size: 14 })
387
+ children: /* @__PURE__ */ d(A, { size: 14 })
282
388
  })
283
389
  ]
284
390
  }, `${e.name}-${e.size}-${t}`))
@@ -288,30 +394,30 @@ function be({ accept: e, multiple: t = !1, maxSize: r, onFilesSelected: i, onRej
288
394
  }
289
395
  //#endregion
290
396
  //#region src/components/ui/ProgressBar.tsx
291
- var xe = {
397
+ var Te = {
292
398
  sm: "h-1.5",
293
399
  md: "h-2.5",
294
400
  lg: "h-4"
295
- }, Se = {
401
+ }, Ee = {
296
402
  primary: "bg-primary",
297
403
  success: "bg-success",
298
404
  warning: "bg-warning",
299
405
  error: "bg-error",
300
406
  info: "bg-info"
301
- }, Ce = t(function({ value: e, variant: t = "primary", size: n = "md", showLabel: r = !1, formatLabel: i, className: a = "", ...o }, s) {
407
+ }, De = t(function({ value: e, variant: t = "primary", size: n = "md", showLabel: r = !1, formatLabel: i, className: a = "", ...o }, s) {
302
408
  let c = Math.round(Math.min(100, Math.max(0, e))), l = i ? i(c) : `${c}%`;
303
409
  return /* @__PURE__ */ f("div", {
304
410
  ref: s,
305
411
  className: `flex items-center gap-2 ${a}`,
306
412
  ...o,
307
413
  children: [/* @__PURE__ */ d("div", {
308
- className: ["flex-1 overflow-hidden rounded-full bg-bg-tertiary", xe[n]].join(" "),
414
+ className: ["flex-1 overflow-hidden rounded-full bg-bg-tertiary", Te[n]].join(" "),
309
415
  role: "progressbar",
310
416
  "aria-valuenow": c,
311
417
  "aria-valuemin": 0,
312
418
  "aria-valuemax": 100,
313
419
  children: /* @__PURE__ */ d("div", {
314
- className: ["h-full rounded-full transition-all duration-300 ease-out", Se[t]].join(" "),
420
+ className: ["h-full rounded-full transition-all duration-300 ease-out", Ee[t]].join(" "),
315
421
  style: { width: `${c}%` }
316
422
  })
317
423
  }), r && /* @__PURE__ */ d("span", {
@@ -319,7 +425,7 @@ var xe = {
319
425
  children: l
320
426
  })]
321
427
  });
322
- }), we = t(function({ label: e, indeterminate: t = !1, helperText: r, error: o, className: c = "", id: l, disabled: u, ...p }, m) {
428
+ }), Oe = t(function({ label: e, indeterminate: t = !1, helperText: r, error: o, className: c = "", id: l, disabled: u, ...p }, m) {
323
429
  let h = a(), g = l ?? h, _ = `${g}-helper`, v = !!o, y = s(null), b = n((e) => {
324
430
  y.current = e, typeof m == "function" ? m(e) : m && (m.current = e);
325
431
  }, [m]);
@@ -359,23 +465,23 @@ var xe = {
359
465
  children: o ?? r
360
466
  })]
361
467
  });
362
- }), Te = {
468
+ }), ke = {
363
469
  sm: "h-8 text-small px-2.5",
364
470
  md: "h-10 text-body px-3",
365
471
  lg: "h-12 text-body px-3.5"
366
- }, Ee = {
472
+ }, Ae = {
367
473
  sm: "pl-8",
368
474
  md: "pl-10",
369
475
  lg: "pl-11"
370
- }, De = {
476
+ }, je = {
371
477
  sm: "pr-8",
372
478
  md: "pr-10",
373
479
  lg: "pr-11"
374
- }, U = {
480
+ }, q = {
375
481
  sm: "[&>svg]:size-4",
376
482
  md: "[&>svg]:size-5",
377
483
  lg: "[&>svg]:size-5"
378
- }, Oe = t(function({ label: e, helperText: t, error: n, leftIcon: r, rightIcon: i, inputSize: o = "md", className: s = "", id: c, disabled: l, ...u }, p) {
484
+ }, Me = t(function({ label: e, helperText: t, error: n, leftIcon: r, rightIcon: i, inputSize: o = "md", className: s = "", id: c, disabled: l, ...u }, p) {
379
485
  let m = a(), h = c ?? m, g = `${h}-helper`, _ = !!n;
380
486
  return /* @__PURE__ */ f("div", {
381
487
  className: `flex flex-col gap-1.5 ${s}`,
@@ -389,7 +495,7 @@ var xe = {
389
495
  className: "relative",
390
496
  children: [
391
497
  r && /* @__PURE__ */ d("span", {
392
- className: `pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3 text-text-secondary ${U[o]}`,
498
+ className: `pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3 text-text-secondary ${q[o]}`,
393
499
  "aria-hidden": "true",
394
500
  children: r
395
501
  }),
@@ -405,14 +511,14 @@ var xe = {
405
511
  "focus:border-primary focus:ring-1 focus:ring-primary",
406
512
  "disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-bg-secondary",
407
513
  _ ? "border-error focus:border-error focus:ring-error" : "border-border hover:border-border-strong",
408
- Te[o],
409
- r ? Ee[o] : "",
410
- i ? De[o] : ""
514
+ ke[o],
515
+ r ? Ae[o] : "",
516
+ i ? je[o] : ""
411
517
  ].join(" "),
412
518
  ...u
413
519
  }),
414
520
  i && /* @__PURE__ */ d("span", {
415
- className: `pointer-events-none absolute inset-y-0 right-0 flex items-center pr-3 text-text-secondary ${U[o]}`,
521
+ className: `pointer-events-none absolute inset-y-0 right-0 flex items-center pr-3 text-text-secondary ${q[o]}`,
416
522
  "aria-hidden": "true",
417
523
  children: i
418
524
  })
@@ -425,15 +531,15 @@ var xe = {
425
531
  })
426
532
  ]
427
533
  });
428
- }), W = e(null);
429
- function ke() {
430
- let e = r(W);
534
+ }), J = e(null);
535
+ function Ne() {
536
+ let e = r(J);
431
537
  if (!e) throw Error("RadioGroup.Item must be used within RadioGroup");
432
538
  return e;
433
539
  }
434
- function G({ name: e, value: t, onChange: n, label: r, helperText: i, error: o, orientation: s = "vertical", disabled: c = !1, children: l, className: u = "" }) {
540
+ function Y({ name: e, value: t, onChange: n, label: r, helperText: i, error: o, orientation: s = "vertical", disabled: c = !1, children: l, className: u = "" }) {
435
541
  let p = a(), m = e ?? p, h = `${`${m}-group`}-helper`, g = !!o;
436
- return /* @__PURE__ */ d(W.Provider, {
542
+ return /* @__PURE__ */ d(J.Provider, {
437
543
  value: {
438
544
  name: m,
439
545
  value: t,
@@ -464,8 +570,8 @@ function G({ name: e, value: t, onChange: n, label: r, helperText: i, error: o,
464
570
  })
465
571
  });
466
572
  }
467
- function Ae({ value: e, label: t, description: n, disabled: r }) {
468
- let { name: i, value: o, onChange: s, disabled: c, hasError: l } = ke(), u = a(), p = c || r;
573
+ function Pe({ value: e, label: t, description: n, disabled: r }) {
574
+ let { name: i, value: o, onChange: s, disabled: c, hasError: l } = Ne(), u = a(), p = c || r;
469
575
  return /* @__PURE__ */ f("div", {
470
576
  className: "flex items-start gap-2",
471
577
  children: [/* @__PURE__ */ d("input", {
@@ -497,10 +603,10 @@ function Ae({ value: e, label: t, description: n, disabled: r }) {
497
603
  })]
498
604
  });
499
605
  }
500
- G.Item = Ae;
606
+ Y.Item = Pe;
501
607
  //#endregion
502
608
  //#region src/theme/reactSelectStyles.ts
503
- var K = (e) => ({
609
+ var Fe = (e) => ({
504
610
  ...e,
505
611
  borderRadius: 8,
506
612
  colors: {
@@ -523,7 +629,7 @@ var K = (e) => ({
523
629
  danger: "var(--color-error)",
524
630
  dangerLight: "var(--color-error-bg)"
525
631
  }
526
- }), q = {
632
+ }), X = {
527
633
  control: ({ isFocused: e }) => `!shadow-sm !rounded-md !border-border ${e ? "!border-primary !ring-1 !ring-primary" : ""}`,
528
634
  menu: () => "!rounded-lg !shadow-lg !border !border-border",
529
635
  option: ({ isFocused: e, isSelected: t }) => `${t ? "!bg-primary !text-white" : e ? "!bg-bg-tertiary" : ""}`,
@@ -531,7 +637,7 @@ var K = (e) => ({
531
637
  };
532
638
  //#endregion
533
639
  //#region src/components/ui/Select.tsx
534
- function je({ label: e, helperText: t, error: n, className: r = "", ...i }) {
640
+ function Ie({ label: e, helperText: t, error: n, className: r = "", ...i }) {
535
641
  let o = a(), s = i.inputId ?? o, c = `${s}-helper`, l = !!n;
536
642
  return /* @__PURE__ */ f("div", {
537
643
  className: `flex flex-col gap-1.5 ${r}`,
@@ -541,9 +647,9 @@ function je({ label: e, helperText: t, error: n, className: r = "", ...i }) {
541
647
  className: "text-small font-medium text-text-primary",
542
648
  children: e
543
649
  }),
544
- /* @__PURE__ */ d(k, {
650
+ /* @__PURE__ */ d(ee, {
545
651
  inputId: s,
546
- theme: K,
652
+ theme: Fe,
547
653
  menuPortalTarget: document.body,
548
654
  styles: {
549
655
  menuPortal: (e) => ({
@@ -553,9 +659,9 @@ function je({ label: e, helperText: t, error: n, className: r = "", ...i }) {
553
659
  ...i.styles
554
660
  },
555
661
  classNames: {
556
- ...q,
662
+ ...X,
557
663
  control: (e) => {
558
- let t = q.control?.(e) ?? "";
664
+ let t = X.control?.(e) ?? "";
559
665
  return l ? `${t} !border-error !focus:ring-error` : t;
560
666
  }
561
667
  },
@@ -573,7 +679,7 @@ function je({ label: e, helperText: t, error: n, className: r = "", ...i }) {
573
679
  }
574
680
  //#endregion
575
681
  //#region src/components/ui/Switch.tsx
576
- var Me = t(function({ label: e, helperText: t, className: n = "", id: r, disabled: i, ...o }, s) {
682
+ var Le = t(function({ label: e, helperText: t, className: n = "", id: r, disabled: i, ...o }, s) {
577
683
  let c = a(), l = r ?? c, u = `${l}-helper`;
578
684
  return /* @__PURE__ */ f("div", {
579
685
  className: `flex flex-col gap-1 ${n}`,
@@ -616,7 +722,7 @@ var Me = t(function({ label: e, helperText: t, className: n = "", id: r, disable
616
722
  children: t
617
723
  })]
618
724
  });
619
- }), Ne = t(function({ label: e, helperText: t, error: r, autoGrow: o = !1, minRows: c = 3, className: l = "", id: u, disabled: p, onChange: m, ...h }, g) {
725
+ }), Re = t(function({ label: e, helperText: t, error: r, autoGrow: o = !1, minRows: c = 3, className: l = "", id: u, disabled: p, onChange: m, ...h }, g) {
620
726
  let _ = a(), v = u ?? _, y = `${v}-helper`, b = !!r, x = s(null), S = n(() => {
621
727
  let e = x.current;
622
728
  !e || !o || (e.style.height = "auto", e.style.height = `${e.scrollHeight}px`);
@@ -666,20 +772,20 @@ var Me = t(function({ label: e, helperText: t, className: n = "", id: r, disable
666
772
  })
667
773
  ]
668
774
  });
669
- }), J = e({
775
+ }), ze = e({
670
776
  close: () => {},
671
777
  getItemProps: () => ({}),
672
778
  activeIndex: null,
673
779
  setActiveIndex: () => {}
674
780
  });
675
- function Pe() {
781
+ function Be() {
676
782
  return /* @__PURE__ */ d("div", {
677
783
  role: "separator",
678
784
  className: "my-1 border-t border-border"
679
785
  });
680
786
  }
681
- var Fe = t(function({ children: e, icon: t, danger: n = !1, disabled: i = !1, onClick: a, className: o = "", ...s }, c) {
682
- let { close: l } = r(J);
787
+ var Ve = t(function({ children: e, icon: t, danger: n = !1, disabled: i = !1, onClick: a, className: o = "", ...s }, c) {
788
+ let { close: l } = r(ze);
683
789
  return /* @__PURE__ */ f("button", {
684
790
  ref: c,
685
791
  type: "button",
@@ -702,22 +808,22 @@ var Fe = t(function({ children: e, icon: t, danger: n = !1, disabled: i = !1, on
702
808
  }), e]
703
809
  });
704
810
  });
705
- function Ie({ trigger: e, children: t, placement: r = "bottom-start", className: i = "" }) {
706
- let [a, o] = c(!1), [l, p] = c(null), m = s([]), { refs: h, floatingStyles: g, context: _ } = L({
811
+ function He({ trigger: e, children: t, placement: r = "bottom-start", className: i = "" }) {
812
+ let [a, o] = c(!1), [l, p] = c(null), m = s([]), { refs: h, floatingStyles: g, context: _ } = V({
707
813
  open: a,
708
814
  onOpenChange: o,
709
815
  placement: r,
710
816
  middleware: [
711
- P(4),
712
- N(),
713
- F({ padding: 8 })
817
+ L(4),
818
+ I(),
819
+ R({ padding: 8 })
714
820
  ],
715
- whileElementsMounted: M
716
- }), { getReferenceProps: v, getFloatingProps: y, getItemProps: b } = R([
717
- te(_),
718
- I(_),
719
- z(_, { role: "menu" }),
720
- ie(_, {
821
+ whileElementsMounted: F
822
+ }), { getReferenceProps: v, getFloatingProps: y, getItemProps: b } = H([
823
+ z(_),
824
+ B(_),
825
+ U(_, { role: "menu" }),
826
+ ae(_, {
721
827
  listRef: m,
722
828
  activeIndex: l,
723
829
  onNavigate: p,
@@ -729,7 +835,7 @@ function Ie({ trigger: e, children: t, placement: r = "bottom-start", className:
729
835
  className: "inline-flex",
730
836
  ...v(),
731
837
  children: e
732
- }), a && /* @__PURE__ */ d(j, { children: /* @__PURE__ */ d(A, {
838
+ }), a && /* @__PURE__ */ d(P, { children: /* @__PURE__ */ d(te, {
733
839
  context: _,
734
840
  modal: !1,
735
841
  children: /* @__PURE__ */ d("div", {
@@ -741,7 +847,7 @@ function Ie({ trigger: e, children: t, placement: r = "bottom-start", className:
741
847
  i
742
848
  ].join(" "),
743
849
  ...y(),
744
- children: /* @__PURE__ */ d(J.Provider, {
850
+ children: /* @__PURE__ */ d(ze.Provider, {
745
851
  value: {
746
852
  close: x,
747
853
  getItemProps: b,
@@ -755,28 +861,28 @@ function Ie({ trigger: e, children: t, placement: r = "bottom-start", className:
755
861
  }
756
862
  //#endregion
757
863
  //#region src/components/ui/Popover.tsx
758
- function Le({ trigger: e, children: t, placement: n = "bottom", open: r, onOpenChange: i, className: a = "" }) {
759
- let [o, s] = c(!1), l = r !== void 0, p = l ? r : o, { refs: m, floatingStyles: h, context: g } = L({
864
+ function Ue({ trigger: e, children: t, placement: n = "bottom", open: r, onOpenChange: i, className: a = "" }) {
865
+ let [o, s] = c(!1), l = r !== void 0, p = l ? r : o, { refs: m, floatingStyles: h, context: g } = V({
760
866
  open: p,
761
867
  onOpenChange: l ? (e) => i?.(e) : s,
762
868
  placement: n,
763
869
  middleware: [
764
- P(8),
765
- N(),
766
- F({ padding: 8 })
870
+ L(8),
871
+ I(),
872
+ R({ padding: 8 })
767
873
  ],
768
- whileElementsMounted: M
769
- }), { getReferenceProps: _, getFloatingProps: v } = R([
770
- te(g),
771
- I(g),
772
- z(g)
874
+ whileElementsMounted: F
875
+ }), { getReferenceProps: _, getFloatingProps: v } = H([
876
+ z(g),
877
+ B(g),
878
+ U(g)
773
879
  ]);
774
880
  return /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d("span", {
775
881
  ref: m.setReference,
776
882
  className: "inline-flex",
777
883
  ..._(),
778
884
  children: e
779
- }), p && /* @__PURE__ */ d(j, { children: /* @__PURE__ */ d(A, {
885
+ }), p && /* @__PURE__ */ d(P, { children: /* @__PURE__ */ d(te, {
780
886
  context: g,
781
887
  modal: !1,
782
888
  children: /* @__PURE__ */ d("div", {
@@ -794,12 +900,12 @@ function Le({ trigger: e, children: t, placement: n = "bottom", open: r, onOpenC
794
900
  }
795
901
  //#endregion
796
902
  //#region src/components/ui/Tabs.tsx
797
- var Y = e({
903
+ var We = e({
798
904
  activeValue: "",
799
905
  idPrefix: ""
800
906
  });
801
- function Re({ value: e, children: t, className: n = "" }) {
802
- let { activeValue: i, idPrefix: a } = r(Y), o = i === e;
907
+ function Ge({ value: e, children: t, className: n = "" }) {
908
+ let { activeValue: i, idPrefix: a } = r(We), o = i === e;
803
909
  return /* @__PURE__ */ d("div", {
804
910
  id: `${a}-panel-${e}`,
805
911
  role: "tabpanel",
@@ -810,7 +916,7 @@ function Re({ value: e, children: t, className: n = "" }) {
810
916
  children: o && t
811
917
  });
812
918
  }
813
- function ze({ items: e, value: t, defaultValue: r, onChange: i, children: o, className: l = "" }) {
919
+ function Ke({ items: e, value: t, defaultValue: r, onChange: i, children: o, className: l = "" }) {
814
920
  let u = a().replace(/:/g, ""), p = s(null), m = t !== void 0, [h, g] = c(() => r ?? e.find((e) => !e.disabled)?.value ?? e[0]?.value ?? ""), _ = m ? t : h, v = n((e) => {
815
921
  m || g(e), i?.(e);
816
922
  }, [m, i]), y = e.filter((e) => !e.disabled), b = (e) => {
@@ -835,7 +941,7 @@ function ze({ items: e, value: t, defaultValue: r, onChange: i, children: o, cla
835
941
  let r = y[n];
836
942
  r && (v(r.value), (p.current?.querySelector(`[data-tab-value="${r.value}"]`))?.focus());
837
943
  };
838
- return /* @__PURE__ */ d(Y.Provider, {
944
+ return /* @__PURE__ */ d(We.Provider, {
839
945
  value: {
840
946
  activeValue: _,
841
947
  idPrefix: u
@@ -879,39 +985,39 @@ function ze({ items: e, value: t, defaultValue: r, onChange: i, children: o, cla
879
985
  }
880
986
  //#endregion
881
987
  //#region src/components/ui/Tooltip.tsx
882
- var Be = {
988
+ var qe = {
883
989
  top: "bottom",
884
990
  bottom: "top",
885
991
  left: "right",
886
992
  right: "left"
887
993
  };
888
- function Ve({ children: e, content: t, placement: n = "top", delay: r = 200, className: i = "" }) {
889
- let [a, o] = c(!1), l = s(null), { refs: p, floatingStyles: m, context: h, middlewareData: g, placement: _ } = L({
994
+ function Je({ children: e, content: t, placement: n = "top", delay: r = 200, className: i = "" }) {
995
+ let [a, o] = c(!1), l = s(null), { refs: p, floatingStyles: m, context: h, middlewareData: g, placement: _ } = V({
890
996
  open: a,
891
997
  onOpenChange: o,
892
998
  placement: n,
893
999
  middleware: [
894
- P(8),
895
- N(),
896
- F({ padding: 8 }),
897
- ee({ element: l })
1000
+ L(8),
1001
+ I(),
1002
+ R({ padding: 8 }),
1003
+ ne({ element: l })
898
1004
  ],
899
- whileElementsMounted: M
900
- }), { getReferenceProps: v, getFloatingProps: y } = R([
901
- re(h, {
1005
+ whileElementsMounted: F
1006
+ }), { getReferenceProps: v, getFloatingProps: y } = H([
1007
+ ie(h, {
902
1008
  delay: r,
903
1009
  move: !1
904
1010
  }),
905
- ne(h),
906
- I(h),
907
- z(h, { role: "tooltip" })
1011
+ re(h),
1012
+ B(h),
1013
+ U(h, { role: "tooltip" })
908
1014
  ]), b = _.split("-")[0], x = g.arrow?.x, S = g.arrow?.y;
909
1015
  return /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d("span", {
910
1016
  ref: p.setReference,
911
1017
  className: "inline-flex",
912
1018
  ...v(),
913
1019
  children: e
914
- }), a && t && /* @__PURE__ */ d(j, { children: /* @__PURE__ */ f("div", {
1020
+ }), a && t && /* @__PURE__ */ d(P, { children: /* @__PURE__ */ f("div", {
915
1021
  ref: p.setFloating,
916
1022
  style: m,
917
1023
  role: "tooltip",
@@ -928,15 +1034,15 @@ function Ve({ children: e, content: t, placement: n = "top", delay: r = 200, cla
928
1034
  style: {
929
1035
  left: x == null ? "" : `${x}px`,
930
1036
  top: S == null ? "" : `${S}px`,
931
- [Be[b]]: "-4px"
1037
+ [qe[b]]: "-4px"
932
1038
  }
933
1039
  })]
934
1040
  }) })] });
935
1041
  }
936
1042
  //#endregion
937
1043
  //#region src/hooks/useLanguage.ts
938
- function X() {
939
- let { i18n: e } = B(), t = e.language ?? "en", r = n((t) => {
1044
+ function Ye() {
1045
+ let { i18n: e } = N(), t = e.language ?? "en", r = n((t) => {
940
1046
  e.changeLanguage(t);
941
1047
  }, [e]);
942
1048
  return {
@@ -949,20 +1055,20 @@ function X() {
949
1055
  }
950
1056
  //#endregion
951
1057
  //#region src/components/ui/LanguageSwitcher.tsx
952
- var He = [{
1058
+ var Xe = [{
953
1059
  value: "en",
954
1060
  label: "EN"
955
1061
  }, {
956
1062
  value: "fr",
957
1063
  label: "FR"
958
1064
  }];
959
- function Ue({ className: e = "" }) {
960
- let { language: t, setLanguage: n } = X();
1065
+ function Ze({ className: e = "" }) {
1066
+ let { language: t, setLanguage: n } = Ye();
961
1067
  return /* @__PURE__ */ d("div", {
962
1068
  role: "radiogroup",
963
1069
  "aria-label": "Language",
964
1070
  className: ["inline-flex items-center rounded-full border border-border bg-bg-secondary p-0.5", e].filter(Boolean).join(" "),
965
- children: He.map(({ value: e, label: r }) => {
1071
+ children: Xe.map(({ value: e, label: r }) => {
966
1072
  let i = t === e;
967
1073
  return /* @__PURE__ */ d("button", {
968
1074
  type: "button",
@@ -978,22 +1084,22 @@ function Ue({ className: e = "" }) {
978
1084
  //#endregion
979
1085
  //#region src/hooks/useTheme.ts
980
1086
  var Z = "poesis-theme", Q = /* @__PURE__ */ new Set();
981
- function We() {
1087
+ function Qe() {
982
1088
  Q.forEach((e) => e());
983
1089
  }
984
- function Ge(e) {
1090
+ function $e(e) {
985
1091
  return Q.add(e), () => Q.delete(e);
986
1092
  }
987
- function Ke() {
1093
+ function et() {
988
1094
  return document.documentElement.classList.contains("dark") ? "dark" : "light";
989
1095
  }
990
- function qe() {
1096
+ function tt() {
991
1097
  return "light";
992
1098
  }
993
1099
  function $(e) {
994
- e === "dark" ? document.documentElement.classList.add("dark") : document.documentElement.classList.remove("dark"), localStorage.setItem(Z, e), We();
1100
+ e === "dark" ? document.documentElement.classList.add("dark") : document.documentElement.classList.remove("dark"), localStorage.setItem(Z, e), Qe();
995
1101
  }
996
- function Je() {
1102
+ function nt() {
997
1103
  let e = localStorage.getItem(Z);
998
1104
  if (e) {
999
1105
  $(e);
@@ -1002,8 +1108,8 @@ function Je() {
1002
1108
  let t = window.matchMedia("(prefers-color-scheme: dark)").matches;
1003
1109
  $(t ? "dark" : "light");
1004
1110
  }
1005
- function Ye() {
1006
- let e = l(Ge, Ke, qe);
1111
+ function rt() {
1112
+ let e = l($e, et, tt);
1007
1113
  return i(() => {
1008
1114
  let e = window.matchMedia("(prefers-color-scheme: dark)"), t = (e) => {
1009
1115
  localStorage.getItem(Z) || $(e.matches ? "dark" : "light");
@@ -1022,12 +1128,12 @@ function Ye() {
1022
1128
  }
1023
1129
  //#endregion
1024
1130
  //#region src/components/ui/ThemeToggle.tsx
1025
- function Xe({ variant: e = "ghost", size: t = "md", className: n }) {
1026
- let { isDark: r, toggleTheme: i } = Ye(), { t: a } = B();
1027
- return /* @__PURE__ */ d(H, {
1131
+ function it({ variant: e = "ghost", size: t = "md", className: n }) {
1132
+ let { isDark: r, toggleTheme: i } = rt(), { t: a } = N();
1133
+ return /* @__PURE__ */ d(G, {
1028
1134
  variant: e,
1029
1135
  size: t,
1030
- icon: d(r ? T : y, { size: 16 }),
1136
+ icon: d(r ? k : C, { size: 16 }),
1031
1137
  "aria-label": a("theme.toggleTheme"),
1032
1138
  onClick: i,
1033
1139
  className: n
@@ -1035,7 +1141,7 @@ function Xe({ variant: e = "ghost", size: t = "md", className: n }) {
1035
1141
  }
1036
1142
  //#endregion
1037
1143
  //#region src/components/layout/TopNav.tsx
1038
- function Ze({ logo: e, categories: t = [], activeCategoryId: n, onCategoryChange: r, actions: i, onBurgerClick: a }) {
1144
+ function at({ logo: e, categories: t = [], activeCategoryId: n, onCategoryChange: r, actions: i, onBurgerClick: a }) {
1039
1145
  return /* @__PURE__ */ f("header", {
1040
1146
  className: "fixed inset-x-0 top-0 z-40 flex h-14 items-center border-b border-border bg-bg-primary px-md",
1041
1147
  children: [
@@ -1044,7 +1150,7 @@ function Ze({ logo: e, categories: t = [], activeCategoryId: n, onCategoryChange
1044
1150
  onClick: a,
1045
1151
  className: "mr-sm flex size-9 items-center justify-center rounded-md text-text-secondary hover:bg-bg-tertiary hover:text-text-primary lg:hidden",
1046
1152
  "aria-label": "Open menu",
1047
- children: /* @__PURE__ */ d(v, { size: 22 })
1153
+ children: /* @__PURE__ */ d(S, { size: 22 })
1048
1154
  }),
1049
1155
  /* @__PURE__ */ d("div", {
1050
1156
  className: "mr-lg flex shrink-0 items-center",
@@ -1077,13 +1183,13 @@ function Ze({ logo: e, categories: t = [], activeCategoryId: n, onCategoryChange
1077
1183
  }
1078
1184
  //#endregion
1079
1185
  //#region src/components/layout/SideNav.tsx
1080
- function Qe({ sections: e = [], activeLinkId: t, onLinkClick: n, collapsed: r = !1 }) {
1186
+ function ot({ sections: e = [], activeLinkId: t, onLinkClick: n, collapsed: r = !1 }) {
1081
1187
  return /* @__PURE__ */ d("aside", {
1082
1188
  className: ["hidden lg:flex flex-col border-r border-border bg-bg-secondary overflow-y-auto transition-[width] duration-200", r ? "w-16" : "w-64"].join(" "),
1083
1189
  children: /* @__PURE__ */ d("nav", {
1084
1190
  className: "flex flex-col gap-xs p-sm",
1085
1191
  "aria-label": "Page navigation",
1086
- children: e.map((e) => /* @__PURE__ */ d($e, {
1192
+ children: e.map((e) => /* @__PURE__ */ d(st, {
1087
1193
  section: e,
1088
1194
  activeLinkId: t,
1089
1195
  onLinkClick: n,
@@ -1092,7 +1198,7 @@ function Qe({ sections: e = [], activeLinkId: t, onLinkClick: n, collapsed: r =
1092
1198
  })
1093
1199
  });
1094
1200
  }
1095
- function $e({ section: e, activeLinkId: t, onLinkClick: n, collapsed: r }) {
1201
+ function st({ section: e, activeLinkId: t, onLinkClick: n, collapsed: r }) {
1096
1202
  let [i, a] = c(!0);
1097
1203
  return /* @__PURE__ */ f("div", {
1098
1204
  className: "flex flex-col",
@@ -1100,7 +1206,7 @@ function $e({ section: e, activeLinkId: t, onLinkClick: n, collapsed: r }) {
1100
1206
  type: "button",
1101
1207
  onClick: () => a((e) => !e),
1102
1208
  className: "flex items-center justify-between rounded-md px-sm py-xs text-caption font-semibold uppercase tracking-wide text-text-secondary hover:text-text-primary",
1103
- children: [/* @__PURE__ */ d("span", { children: e.title }), /* @__PURE__ */ d(m, {
1209
+ children: [/* @__PURE__ */ d("span", { children: e.title }), /* @__PURE__ */ d(g, {
1104
1210
  size: 14,
1105
1211
  className: `transition-transform ${i ? "" : "-rotate-90"}`
1106
1212
  })]
@@ -1126,7 +1232,7 @@ function $e({ section: e, activeLinkId: t, onLinkClick: n, collapsed: r }) {
1126
1232
  }
1127
1233
  //#endregion
1128
1234
  //#region src/components/layout/BurgerDrawer.tsx
1129
- function et({ open: e, onClose: t, categories: n = [], activeCategoryId: r, onCategoryChange: a, sections: o = [], activeLinkId: c, onLinkClick: l }) {
1235
+ function ct({ open: e, onClose: t, categories: n = [], activeCategoryId: r, onCategoryChange: a, sections: o = [], activeLinkId: c, onLinkClick: l }) {
1130
1236
  let p = s(null);
1131
1237
  return i(() => {
1132
1238
  if (!e) return;
@@ -1159,7 +1265,7 @@ function et({ open: e, onClose: t, categories: n = [], activeCategoryId: r, onCa
1159
1265
  onClick: t,
1160
1266
  className: "flex size-9 items-center justify-center rounded-md text-text-secondary hover:bg-bg-tertiary hover:text-text-primary",
1161
1267
  "aria-label": "Close menu",
1162
- children: /* @__PURE__ */ d(O, { size: 18 })
1268
+ children: /* @__PURE__ */ d(M, { size: 18 })
1163
1269
  })]
1164
1270
  }), /* @__PURE__ */ f("div", {
1165
1271
  className: "flex-1 overflow-y-auto p-sm",
@@ -1176,7 +1282,7 @@ function et({ open: e, onClose: t, categories: n = [], activeCategoryId: r, onCa
1176
1282
  className: ["flex items-center gap-sm rounded-md px-sm py-xs text-small font-medium transition-colors", e.id === r ? "bg-primary/10 text-primary" : "text-text-secondary hover:bg-bg-tertiary hover:text-text-primary"].join(" "),
1177
1283
  children: [e.icon && /* @__PURE__ */ d(e.icon, { size: 16 }), e.label]
1178
1284
  }, e.id))]
1179
- }), o.map((e) => /* @__PURE__ */ d(tt, {
1285
+ }), o.map((e) => /* @__PURE__ */ d(lt, {
1180
1286
  section: e,
1181
1287
  activeLinkId: c,
1182
1288
  onLinkClick: (e) => {
@@ -1186,7 +1292,7 @@ function et({ open: e, onClose: t, categories: n = [], activeCategoryId: r, onCa
1186
1292
  })]
1187
1293
  })] });
1188
1294
  }
1189
- function tt({ section: e, activeLinkId: t, onLinkClick: n }) {
1295
+ function lt({ section: e, activeLinkId: t, onLinkClick: n }) {
1190
1296
  let [r, i] = c(!0);
1191
1297
  return /* @__PURE__ */ f("div", {
1192
1298
  className: "mb-xs flex flex-col",
@@ -1194,7 +1300,7 @@ function tt({ section: e, activeLinkId: t, onLinkClick: n }) {
1194
1300
  type: "button",
1195
1301
  onClick: () => i((e) => !e),
1196
1302
  className: "flex items-center justify-between rounded-md px-sm py-xs text-caption font-semibold uppercase tracking-wide text-text-muted hover:text-text-secondary",
1197
- children: [/* @__PURE__ */ d("span", { children: e.title }), /* @__PURE__ */ d(m, {
1303
+ children: [/* @__PURE__ */ d("span", { children: e.title }), /* @__PURE__ */ d(g, {
1198
1304
  size: 14,
1199
1305
  className: `transition-transform ${r ? "" : "-rotate-90"}`
1200
1306
  })]
@@ -1215,12 +1321,12 @@ function tt({ section: e, activeLinkId: t, onLinkClick: n }) {
1215
1321
  }
1216
1322
  //#endregion
1217
1323
  //#region src/components/layout/PageShell.tsx
1218
- function nt({ children: e, logo: t, categories: n = [], activeCategoryId: r, onCategoryChange: i, sections: a = [], activeLinkId: o, onLinkClick: s, actions: l, sideNavCollapsed: u = !1 }) {
1324
+ function ut({ children: e, logo: t, categories: n = [], activeCategoryId: r, onCategoryChange: i, sections: a = [], activeLinkId: o, onLinkClick: s, actions: l, sideNavCollapsed: u = !1 }) {
1219
1325
  let [p, m] = c(!1);
1220
1326
  return /* @__PURE__ */ f("div", {
1221
1327
  className: "flex h-screen flex-col bg-bg-primary",
1222
1328
  children: [
1223
- /* @__PURE__ */ d(Ze, {
1329
+ /* @__PURE__ */ d(at, {
1224
1330
  logo: t,
1225
1331
  categories: n,
1226
1332
  activeCategoryId: r,
@@ -1230,7 +1336,7 @@ function nt({ children: e, logo: t, categories: n = [], activeCategoryId: r, onC
1230
1336
  }),
1231
1337
  /* @__PURE__ */ f("div", {
1232
1338
  className: "flex flex-1 overflow-hidden pt-14",
1233
- children: [/* @__PURE__ */ d(Qe, {
1339
+ children: [/* @__PURE__ */ d(ot, {
1234
1340
  sections: a,
1235
1341
  activeLinkId: o,
1236
1342
  onLinkClick: s,
@@ -1243,7 +1349,7 @@ function nt({ children: e, logo: t, categories: n = [], activeCategoryId: r, onC
1243
1349
  })
1244
1350
  })]
1245
1351
  }),
1246
- /* @__PURE__ */ d(et, {
1352
+ /* @__PURE__ */ d(ct, {
1247
1353
  open: p,
1248
1354
  onClose: () => m(!1),
1249
1355
  categories: n,
@@ -1262,7 +1368,7 @@ function nt({ children: e, logo: t, categories: n = [], activeCategoryId: r, onC
1262
1368
  }
1263
1369
  //#endregion
1264
1370
  //#region src/components/data-display/Card.tsx
1265
- var rt = t(function({ header: e, footer: t, actions: n, noPadding: r = !1, className: i = "", children: a, ...o }, s) {
1371
+ var dt = t(function({ header: e, footer: t, actions: n, noPadding: r = !1, className: i = "", children: a, ...o }, s) {
1266
1372
  let c = t || n;
1267
1373
  return /* @__PURE__ */ f("div", {
1268
1374
  ref: s,
@@ -1296,7 +1402,7 @@ var rt = t(function({ header: e, footer: t, actions: n, noPadding: r = !1, class
1296
1402
  })
1297
1403
  ]
1298
1404
  });
1299
- }), it = t(function({ items: e, layout: t = "horizontal", dividers: n = !0, className: r = "", ...i }, a) {
1405
+ }), ft = t(function({ items: e, layout: t = "horizontal", dividers: n = !0, className: r = "", ...i }, a) {
1300
1406
  let o = t === "horizontal";
1301
1407
  return /* @__PURE__ */ d("dl", {
1302
1408
  ref: a,
@@ -1317,7 +1423,7 @@ var rt = t(function({ header: e, footer: t, actions: n, noPadding: r = !1, class
1317
1423
  })]
1318
1424
  }, t))
1319
1425
  });
1320
- }), at = t(function({ illustration: e, title: t, description: n, action: r, className: i = "", ...a }, o) {
1426
+ }), pt = t(function({ illustration: e, title: t, description: n, action: r, className: i = "", ...a }, o) {
1321
1427
  return /* @__PURE__ */ f("div", {
1322
1428
  ref: o,
1323
1429
  className: ["flex flex-col items-center justify-center text-center py-2xl px-lg", i].filter(Boolean).join(" "),
@@ -1344,7 +1450,7 @@ var rt = t(function({ header: e, footer: t, actions: n, noPadding: r = !1, class
1344
1450
  });
1345
1451
  //#endregion
1346
1452
  //#region src/components/data-display/Table.tsx
1347
- function ot(e, t) {
1453
+ function mt(e, t) {
1348
1454
  if (!e.sortValue || t.length === 0) return "text";
1349
1455
  for (let n of t) {
1350
1456
  let t = e.sortValue(n);
@@ -1352,18 +1458,18 @@ function ot(e, t) {
1352
1458
  }
1353
1459
  return "text";
1354
1460
  }
1355
- function st({ active: e, direction: t, columnType: n }) {
1356
- return e ? d(n === "numeric" ? t === "asc" ? C : w : t === "asc" ? b : x, {
1461
+ function ht({ active: e, direction: t, columnType: n }) {
1462
+ return e ? d(n === "numeric" ? t === "asc" ? D : O : t === "asc" ? w : T, {
1357
1463
  size: 14,
1358
1464
  className: "ml-1 inline",
1359
1465
  "aria-hidden": !0
1360
- }) : /* @__PURE__ */ d(S, {
1466
+ }) : /* @__PURE__ */ d(E, {
1361
1467
  size: 14,
1362
1468
  className: "ml-1 inline opacity-30",
1363
1469
  "aria-hidden": !0
1364
1470
  });
1365
1471
  }
1366
- var ct = t(function({ columns: e, data: t, rowKey: r, striped: i = !1, sort: a, onSortChange: s, emptyContent: l, className: u = "", ...p }, m) {
1472
+ var gt = t(function({ columns: e, data: t, rowKey: r, striped: i = !1, sort: a, onSortChange: s, emptyContent: l, className: u = "", ...p }, m) {
1367
1473
  let [h, g] = c(), _ = a ?? h, v = n((e) => {
1368
1474
  let t = _?.column === e && _.direction === "asc" ? {
1369
1475
  column: e,
@@ -1393,7 +1499,7 @@ var ct = t(function({ columns: e, data: t, rowKey: r, striped: i = !1, sort: a,
1393
1499
  s
1394
1500
  ]), b = o(() => {
1395
1501
  let n = /* @__PURE__ */ new Map();
1396
- for (let r of e) r.sortable && n.set(r.key, ot(r, t));
1502
+ for (let r of e) r.sortable && n.set(r.key, mt(r, t));
1397
1503
  return n;
1398
1504
  }, [e, t]), x = y.length === 0;
1399
1505
  return /* @__PURE__ */ d("div", {
@@ -1416,7 +1522,7 @@ var ct = t(function({ columns: e, data: t, rowKey: r, striped: i = !1, sort: a,
1416
1522
  "aria-sort": t ? _.direction === "asc" ? "ascending" : "descending" : e.sortable ? "none" : void 0,
1417
1523
  children: /* @__PURE__ */ f("span", {
1418
1524
  className: "inline-flex items-center",
1419
- children: [e.header, e.sortable && /* @__PURE__ */ d(st, {
1525
+ children: [e.header, e.sortable && /* @__PURE__ */ d(ht, {
1420
1526
  active: t,
1421
1527
  direction: t ? _.direction : void 0,
1422
1528
  columnType: b.get(e.key) ?? "text"
@@ -1441,7 +1547,7 @@ var ct = t(function({ columns: e, data: t, rowKey: r, striped: i = !1, sort: a,
1441
1547
  }, r(t, n))) })]
1442
1548
  })
1443
1549
  });
1444
- }), lt = {
1550
+ }), _t = {
1445
1551
  success: {
1446
1552
  bg: "bg-success-bg",
1447
1553
  border: "border-success/30",
@@ -1452,23 +1558,23 @@ var ct = t(function({ columns: e, data: t, rowKey: r, striped: i = !1, sort: a,
1452
1558
  bg: "bg-warning-bg",
1453
1559
  border: "border-warning/30",
1454
1560
  text: "text-warning",
1455
- icon: g
1561
+ icon: b
1456
1562
  },
1457
1563
  error: {
1458
1564
  bg: "bg-error-bg",
1459
1565
  border: "border-error/30",
1460
1566
  text: "text-error",
1461
- icon: D
1567
+ icon: j
1462
1568
  },
1463
1569
  info: {
1464
1570
  bg: "bg-info-bg",
1465
1571
  border: "border-info/30",
1466
1572
  text: "text-info",
1467
- icon: _
1573
+ icon: x
1468
1574
  }
1469
1575
  };
1470
- function ut({ variant: e, title: t, children: n, dismissible: r = !1, onDismiss: i, className: a = "" }) {
1471
- let [o, s] = c(!0), { bg: l, border: u, text: p, icon: m } = lt[e];
1576
+ function vt({ variant: e, title: t, children: n, dismissible: r = !1, onDismiss: i, className: a = "" }) {
1577
+ let [o, s] = c(!0), { bg: l, border: u, text: p, icon: m } = _t[e];
1472
1578
  if (!o) return null;
1473
1579
  let h = () => {
1474
1580
  s(!1), i?.();
@@ -1497,19 +1603,19 @@ function ut({ variant: e, title: t, children: n, dismissible: r = !1, onDismiss:
1497
1603
  onClick: h,
1498
1604
  className: "shrink-0 p-1 rounded-sm text-text-secondary hover:text-text-primary hover:bg-bg-tertiary transition-colors cursor-pointer",
1499
1605
  "aria-label": "Dismiss alert",
1500
- children: /* @__PURE__ */ d(E, { size: 16 })
1606
+ children: /* @__PURE__ */ d(A, { size: 16 })
1501
1607
  })
1502
1608
  ]
1503
1609
  });
1504
1610
  }
1505
1611
  //#endregion
1506
1612
  //#region src/components/feedback/Dialog.tsx
1507
- var dt = {
1613
+ var yt = {
1508
1614
  sm: "max-w-[24rem]",
1509
1615
  md: "max-w-[32rem]",
1510
1616
  lg: "max-w-[42rem]"
1511
1617
  };
1512
- function ft({ open: e, onClose: t, title: n, size: r = "md", children: a, footer: o, className: c = "" }) {
1618
+ function bt({ open: e, onClose: t, title: n, size: r = "md", children: a, footer: o, className: c = "" }) {
1513
1619
  let l = s(null);
1514
1620
  i(() => {
1515
1621
  if (!e) return;
@@ -1536,7 +1642,7 @@ function ft({ open: e, onClose: t, title: n, size: r = "md", children: a, footer
1536
1642
  e.shiftKey && document.activeElement === n ? (e.preventDefault(), r.focus()) : !e.shiftKey && document.activeElement === r && (e.preventDefault(), n.focus());
1537
1643
  }
1538
1644
  };
1539
- return e ? ae(/* @__PURE__ */ f("div", {
1645
+ return e ? oe(/* @__PURE__ */ f("div", {
1540
1646
  style: {
1541
1647
  position: "fixed",
1542
1648
  inset: 0,
@@ -1568,7 +1674,7 @@ function ft({ open: e, onClose: t, title: n, size: r = "md", children: a, footer
1568
1674
  children: /* @__PURE__ */ f("div", {
1569
1675
  ref: l,
1570
1676
  tabIndex: -1,
1571
- className: `relative z-10 flex flex-col w-full ${dt[r]} rounded-lg border border-border bg-bg-primary shadow-xl outline-none animate-dialog-in ${c}`,
1677
+ className: `relative z-10 flex flex-col w-full ${yt[r]} rounded-lg border border-border bg-bg-primary shadow-xl outline-none animate-dialog-in ${c}`,
1572
1678
  children: [
1573
1679
  n && /* @__PURE__ */ f("div", {
1574
1680
  className: "flex items-center justify-between px-lg py-md border-b border-border",
@@ -1581,7 +1687,7 @@ function ft({ open: e, onClose: t, title: n, size: r = "md", children: a, footer
1581
1687
  onClick: t,
1582
1688
  className: "shrink-0 p-1 rounded-sm text-text-secondary hover:text-text-primary hover:bg-bg-tertiary transition-colors cursor-pointer",
1583
1689
  "aria-label": "Close dialog",
1584
- children: /* @__PURE__ */ d(E, { size: 18 })
1690
+ children: /* @__PURE__ */ d(A, { size: 18 })
1585
1691
  })]
1586
1692
  }),
1587
1693
  /* @__PURE__ */ d("div", {
@@ -1599,15 +1705,15 @@ function ft({ open: e, onClose: t, title: n, size: r = "md", children: a, footer
1599
1705
  }
1600
1706
  //#endregion
1601
1707
  //#region src/components/feedback/ConfirmDialog.tsx
1602
- function pt({ open: e, onCancel: t, onConfirm: n, title: r, children: i, confirmLabel: a = "Confirm", cancelLabel: o = "Cancel", danger: s = !1, submitting: c = !1, size: l = "sm" }) {
1603
- return /* @__PURE__ */ f(ft, {
1708
+ function xt({ open: e, onCancel: t, onConfirm: n, title: r, children: i, confirmLabel: a = "Confirm", cancelLabel: o = "Cancel", danger: s = !1, submitting: c = !1, size: l = "sm" }) {
1709
+ return /* @__PURE__ */ f(bt, {
1604
1710
  open: e,
1605
1711
  onClose: t,
1606
1712
  title: r,
1607
1713
  size: l,
1608
1714
  children: [/* @__PURE__ */ f("div", {
1609
1715
  className: "flex gap-3",
1610
- children: [s && /* @__PURE__ */ d(g, {
1716
+ children: [s && /* @__PURE__ */ d(b, {
1611
1717
  size: 22,
1612
1718
  className: "shrink-0 mt-0.5 text-error",
1613
1719
  "aria-hidden": !0
@@ -1632,22 +1738,22 @@ function pt({ open: e, onCancel: t, onConfirm: n, title: r, children: i, confirm
1632
1738
  s ? "bg-error hover:bg-error/80" : "bg-primary hover:bg-primary-hover",
1633
1739
  c && "opacity-80 pointer-events-none"
1634
1740
  ].filter(Boolean).join(" "),
1635
- children: [c && /* @__PURE__ */ d(V, { size: "sm" }), a]
1741
+ children: [c && /* @__PURE__ */ d(W, { size: "sm" }), a]
1636
1742
  })]
1637
1743
  })]
1638
1744
  });
1639
1745
  }
1640
1746
  //#endregion
1641
1747
  //#region src/components/feedback/toastContext.ts
1642
- var mt = e(null);
1643
- function ht() {
1644
- let e = r(mt);
1748
+ var St = e(null);
1749
+ function Ct() {
1750
+ let e = r(St);
1645
1751
  if (!e) throw Error("useToast must be used within a <ToastProvider>");
1646
1752
  return e;
1647
1753
  }
1648
1754
  //#endregion
1649
1755
  //#region src/components/feedback/Toast.tsx
1650
- var gt = {
1756
+ var wt = {
1651
1757
  success: {
1652
1758
  bg: "bg-bg-primary",
1653
1759
  accent: "bg-success",
@@ -1658,23 +1764,23 @@ var gt = {
1658
1764
  bg: "bg-bg-primary",
1659
1765
  accent: "bg-warning",
1660
1766
  text: "text-warning",
1661
- icon: g
1767
+ icon: b
1662
1768
  },
1663
1769
  error: {
1664
1770
  bg: "bg-bg-primary",
1665
1771
  accent: "bg-error",
1666
1772
  text: "text-error",
1667
- icon: D
1773
+ icon: j
1668
1774
  },
1669
1775
  info: {
1670
1776
  bg: "bg-bg-primary",
1671
1777
  accent: "bg-info",
1672
1778
  text: "text-info",
1673
- icon: _
1779
+ icon: x
1674
1780
  }
1675
1781
  };
1676
- function _t({ toast: e, onRemove: t }) {
1677
- let { variant: n, title: r, message: a, duration: o = 5e3 } = e, { bg: l, accent: u, text: p, icon: m } = gt[n], [h, g] = c(100), _ = s(0), v = s(0);
1782
+ function Tt({ toast: e, onRemove: t }) {
1783
+ let { variant: n, title: r, message: a, duration: o = 5e3 } = e, { bg: l, accent: u, text: p, icon: m } = wt[n], [h, g] = c(100), _ = s(0), v = s(0);
1678
1784
  return i(() => {
1679
1785
  if (o <= 0) return;
1680
1786
  _.current = performance.now();
@@ -1718,7 +1824,7 @@ function _t({ toast: e, onRemove: t }) {
1718
1824
  onClick: () => t(e.id),
1719
1825
  className: "shrink-0 p-1 rounded-sm text-text-secondary hover:text-text-primary hover:bg-bg-tertiary transition-colors cursor-pointer",
1720
1826
  "aria-label": "Dismiss notification",
1721
- children: /* @__PURE__ */ d(E, { size: 14 })
1827
+ children: /* @__PURE__ */ d(A, { size: 14 })
1722
1828
  })
1723
1829
  ]
1724
1830
  }), o > 0 && /* @__PURE__ */ d("div", {
@@ -1730,10 +1836,10 @@ function _t({ toast: e, onRemove: t }) {
1730
1836
  })]
1731
1837
  });
1732
1838
  }
1733
- var vt = 0;
1734
- function yt({ children: e }) {
1839
+ var Et = 0;
1840
+ function Dt({ children: e }) {
1735
1841
  let [t, r] = c([]), i = n((e) => {
1736
- let t = `toast-${++vt}`;
1842
+ let t = `toast-${++Et}`;
1737
1843
  return r((n) => [...n, {
1738
1844
  ...e,
1739
1845
  id: t
@@ -1741,7 +1847,7 @@ function yt({ children: e }) {
1741
1847
  }, []), a = n((e) => {
1742
1848
  r((t) => t.filter((t) => t.id !== e));
1743
1849
  }, []);
1744
- return /* @__PURE__ */ f(mt, {
1850
+ return /* @__PURE__ */ f(St, {
1745
1851
  value: {
1746
1852
  addToast: i,
1747
1853
  removeToast: a
@@ -1751,7 +1857,7 @@ function yt({ children: e }) {
1751
1857
  className: "fixed bottom-lg right-lg z-50 flex flex-col-reverse gap-sm pointer-events-none",
1752
1858
  children: t.map((e) => /* @__PURE__ */ d("div", {
1753
1859
  className: "pointer-events-auto",
1754
- children: /* @__PURE__ */ d(_t, {
1860
+ children: /* @__PURE__ */ d(Tt, {
1755
1861
  toast: e,
1756
1862
  onRemove: a
1757
1863
  })
@@ -1761,12 +1867,12 @@ function yt({ children: e }) {
1761
1867
  }
1762
1868
  //#endregion
1763
1869
  //#region src/hooks/useAuth.tsx
1764
- var bt = e(null), xt = {
1870
+ var Ot = e(null), kt = {
1765
1871
  name: "Alice Martin",
1766
1872
  email: "alice.martin@epfl.ch",
1767
1873
  role: "admin"
1768
1874
  };
1769
- function St({ initialUser: e = xt, children: t }) {
1875
+ function At({ initialUser: e = kt, children: t }) {
1770
1876
  let [n, r] = c(e), i = (e) => r((t) => ({
1771
1877
  ...t,
1772
1878
  role: e
@@ -1774,17 +1880,17 @@ function St({ initialUser: e = xt, children: t }) {
1774
1880
  user: n,
1775
1881
  setRole: i
1776
1882
  }), [n]);
1777
- return /* @__PURE__ */ d(bt.Provider, {
1883
+ return /* @__PURE__ */ d(Ot.Provider, {
1778
1884
  value: a,
1779
1885
  children: t
1780
1886
  });
1781
1887
  }
1782
- function Ct() {
1783
- let e = r(bt);
1888
+ function jt() {
1889
+ let e = r(Ot);
1784
1890
  if (!e) throw Error("useAuth must be used within an AuthProvider");
1785
1891
  return e;
1786
1892
  }
1787
1893
  //#endregion
1788
- export { ut as Alert, St as AuthProvider, ce as Avatar, de as Badge, et as BurgerDrawer, ge as Button, rt as Card, we as Checkbox, pt as ConfirmDialog, it as DescriptionList, ft as Dialog, Pe as DropdownDivider, Fe as DropdownItem, Ie as DropdownMenu, at as EmptyState, be as FileUpload, H as IconButton, Oe as Input, Ue as LanguageSwitcher, nt as PageShell, Le as Popover, Ce as ProgressBar, G as RadioGroup, je as Select, Qe as SideNav, V as Spinner, Me as Switch, Re as TabPanel, ct as Table, ze as Tabs, Ne as Textarea, Xe as ThemeToggle, yt as ToastProvider, Ve as Tooltip, Ze as TopNav, q as epflSelectClassNames, K as epflSelectTheme, Je as initTheme, Ct as useAuth, X as useLanguage, Ye as useTheme, ht as useToast };
1894
+ export { vt as Alert, At as AuthProvider, le as Avatar, fe as Badge, ct as BurgerDrawer, _e as Button, dt as Card, Oe as Checkbox, xt as ConfirmDialog, ft as DescriptionList, bt as Dialog, Be as DropdownDivider, Ve as DropdownItem, He as DropdownMenu, pt as EmptyState, we as FileUpload, G as IconButton, Me as Input, Ze as LanguageSwitcher, ut as PageShell, Se as Pagination, Ue as Popover, De as ProgressBar, Y as RadioGroup, Ie as Select, ot as SideNav, W as Spinner, Le as Switch, Ge as TabPanel, gt as Table, Ke as Tabs, Re as Textarea, it as ThemeToggle, Dt as ToastProvider, Je as Tooltip, at as TopNav, X as epflSelectClassNames, Fe as epflSelectTheme, nt as initTheme, jt as useAuth, Ye as useLanguage, rt as useTheme, Ct as useToast };
1789
1895
 
1790
1896
  //# sourceMappingURL=poesis.js.map