@usememos/ui 26.10.1 → 26.10.3

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 (79) hide show
  1. package/README.md +3 -1
  2. package/dist/components/avatar/index.js +3 -0
  3. package/dist/components/avatar/index.js.map +7 -0
  4. package/dist/components/badge/index.js +3 -0
  5. package/dist/components/badge/index.js.map +7 -0
  6. package/dist/components/button/index.js +3 -0
  7. package/dist/components/button/index.js.map +7 -0
  8. package/dist/components/checkbox/index.js +3 -0
  9. package/dist/components/checkbox/index.js.map +7 -0
  10. package/dist/components/collapsible/index.js +3 -0
  11. package/dist/components/collapsible/index.js.map +7 -0
  12. package/dist/components/combobox/index.js +3 -0
  13. package/dist/components/combobox/index.js.map +7 -0
  14. package/dist/components/dialog/alert-dialog.js +3 -0
  15. package/dist/components/dialog/alert-dialog.js.map +7 -0
  16. package/dist/components/dialog/index.js +3 -0
  17. package/dist/components/dialog/index.js.map +7 -0
  18. package/dist/components/dialog/parts.js +3 -0
  19. package/dist/components/dialog/parts.js.map +7 -0
  20. package/dist/components/field/fieldset.js +3 -0
  21. package/dist/components/field/fieldset.js.map +7 -0
  22. package/dist/components/field/index.js +3 -0
  23. package/dist/components/field/index.js.map +7 -0
  24. package/dist/components/input/index.js +3 -0
  25. package/dist/components/input/index.js.map +7 -0
  26. package/dist/components/kbd/index.js +3 -0
  27. package/dist/components/kbd/index.js.map +7 -0
  28. package/dist/components/link/index.js +3 -0
  29. package/dist/components/link/index.js.map +7 -0
  30. package/dist/components/menu/index.js +3 -0
  31. package/dist/components/menu/index.js.map +7 -0
  32. package/dist/components/popover/index.js +3 -0
  33. package/dist/components/popover/index.js.map +7 -0
  34. package/dist/components/prose/index.js +3 -0
  35. package/dist/components/prose/index.js.map +7 -0
  36. package/dist/components/radio-group/index.js +3 -0
  37. package/dist/components/radio-group/index.js.map +7 -0
  38. package/dist/components/select/index.js +3 -0
  39. package/dist/components/select/index.js.map +7 -0
  40. package/dist/components/separator/index.js +3 -0
  41. package/dist/components/separator/index.js.map +7 -0
  42. package/dist/components/skeleton/index.js +3 -0
  43. package/dist/components/skeleton/index.js.map +7 -0
  44. package/dist/components/spinner/index.js +3 -0
  45. package/dist/components/spinner/index.js.map +7 -0
  46. package/dist/components/switch/index.js +3 -0
  47. package/dist/components/switch/index.js.map +7 -0
  48. package/dist/components/table/index.js +3 -0
  49. package/dist/components/table/index.js.map +7 -0
  50. package/dist/components/tabs/index.js +3 -0
  51. package/dist/components/tabs/index.js.map +7 -0
  52. package/dist/components/textarea/index.js +3 -0
  53. package/dist/components/textarea/index.js.map +7 -0
  54. package/dist/components/toast/index.js +3 -0
  55. package/dist/components/toast/index.js.map +7 -0
  56. package/dist/components/toggle/index.js +3 -0
  57. package/dist/components/toggle/index.js.map +7 -0
  58. package/dist/components/toggle-group/index.js +3 -0
  59. package/dist/components/toggle-group/index.js.map +7 -0
  60. package/dist/components/tooltip/index.js +3 -0
  61. package/dist/components/tooltip/index.js.map +7 -0
  62. package/dist/index.js +1 -1
  63. package/dist/index.js.map +4 -4
  64. package/dist/internal/class-name.js +3 -0
  65. package/dist/internal/class-name.js.map +7 -0
  66. package/dist/internal/popup.js +3 -0
  67. package/dist/internal/popup.js.map +7 -0
  68. package/dist/internal/size.js +3 -0
  69. package/dist/internal/size.js.map +7 -0
  70. package/dist/styles.css +1 -1
  71. package/dist/tokens.css +1 -1
  72. package/dist/types.js +2 -0
  73. package/dist/types.js.map +7 -0
  74. package/llms-full.txt +79 -43
  75. package/llms.txt +1 -1
  76. package/package.json +1 -1
  77. package/dist/InterVariable-Italic.woff2 +0 -0
  78. package/dist/InterVariable.woff2 +0 -0
  79. package/dist/OFL.txt +0 -92
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/internal/size.ts"],
4
+ "sourcesContent": ["import { createContext, useContext } from 'react';\nimport type { Size } from '../types';\n\n/** The size set on a component's Root, read by its parts. */\nexport const SizeContext = createContext<Size | undefined>(undefined);\n\n/** The size to render at: the component's own prop, else the nearest Root's, else md. */\nexport function useSize(size?: Size): Size {\n const inherited = useContext(SizeContext);\n return size ?? inherited ?? 'md';\n}\n"],
5
+ "mappings": ";AAAA,OAAS,iBAAAA,EAAe,cAAAC,MAAkB,QAInC,IAAMC,EAAcF,EAAgC,MAAS,EAG7D,SAASG,EAAQC,EAAmB,CACzC,IAAMC,EAAYJ,EAAWC,CAAW,EACxC,OAAOE,GAAQC,GAAa,IAC9B",
6
+ "names": ["createContext", "useContext", "SizeContext", "useSize", "size", "inherited"]
7
+ }
package/dist/styles.css CHANGED
@@ -1 +1 @@
1
- .mu-s-sm{--h: var(--control-sm);--px: var(--space-2);--pxi: 6px;--fs: 12px;--lh: 16px;--r: var(--radius-sm);--gap: var(--space-1);--icon: var(--icon-sm);--icon-stroke: 1.25px;--box: 16px}.mu-s-md{--h: var(--control-md);--px: var(--space-3);--pxi: 10px;--fs: 14px;--lh: 20px;--r: var(--radius-md);--gap: 6px;--icon: var(--icon-md);--icon-stroke: 1.5px;--box: 18px}.mu-s-lg{--h: var(--control-lg);--px: var(--space-4);--pxi: var(--space-3);--fs: 16px;--lh: 24px;--r: var(--radius-lg);--gap: var(--space-2);--icon: var(--icon-lg);--icon-stroke: 1.5px;--box: 20px}.mu-recessed{background-color:var(--well);box-shadow:inset 0 0 0 1px var(--edge),var(--shadow-track)}.mu-raised{background-color:var(--key);background-image:linear-gradient(180deg,var(--key-sheen),rgba(255,255,255,0) 60%);box-shadow:var(--shadow-raised)}.mu-key{background-color:var(--key);background-image:linear-gradient(180deg,var(--key-sheen),rgba(255,255,255,0) 60%);box-shadow:var(--shadow-key)}.mu-popup{background:var(--surface);box-shadow:var(--shadow-pop);border-radius:var(--radius-xl)}.mu-positioner{z-index:var(--layer-popup);outline:0}.mu-popup-motion{transition:opacity var(--duration-fade) var(--ease-out),translate var(--duration-fade) var(--ease-out)}.mu-popup-motion[data-starting-style],.mu-popup-motion[data-ending-style]{opacity:0;translate:0 var(--space-1)}.mu-popup-motion[data-instant]{transition:none}@media(prefers-reduced-motion:reduce){.mu-popup-motion[data-starting-style],.mu-popup-motion[data-ending-style]{translate:none}}.mu-base{font-family:var(--font-sans);font-size:var(--fs, 14px);line-height:var(--lh, 20px);font-weight:500;letter-spacing:0;color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent}.mu-base ::selection,.mu-base::selection{background:var(--selection)}.mu-visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.mu-focus:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:var(--focus-width)}.mu-hit{position:relative}@media(pointer:coarse){.mu-hit:after{content:"";position:absolute;left:50%;top:50%;width:max(100%,var(--hit-area));height:max(100%,var(--hit-area));transform:translate(-50%,-50%)}}.mu-icon,.mu-base svg.lucide,.mu-prose svg.lucide{width:var(--icon, 16px);height:var(--icon, 16px);flex:none;display:block;stroke-width:var(--icon-stroke, 1.5px)}.mu-icon *,.mu-base svg.lucide *,.mu-prose svg.lucide *{vector-effect:non-scaling-stroke}.mu-label-xs{font-family:var(--font-sans);font-size:11px;line-height:16px;font-weight:500}.mu-caption{font-family:var(--font-sans);font-size:12px;line-height:16px;font-weight:400}.mu-label-sm{font-family:var(--font-sans);font-size:12px;line-height:16px;font-weight:500}.mu-body-sm{font-family:var(--font-sans);font-size:13px;line-height:18px;font-weight:400}.mu-body{font-family:var(--font-sans);font-size:14px;line-height:20px;font-weight:400}.mu-label{font-family:var(--font-sans);font-size:14px;line-height:20px;font-weight:500}.mu-body-lg{font-family:var(--font-sans);font-size:16px;line-height:24px;font-weight:400}.mu-label-lg{font-family:var(--font-sans);font-size:16px;line-height:24px;font-weight:500}.mu-title{font-family:var(--font-display);font-size:18px;line-height:28px;font-weight:600}.mu-heading-3{font-family:var(--font-display);font-size:20px;line-height:28px;font-weight:600;font-variation-settings:"opsz" 20}.mu-heading-2{font-family:var(--font-display);font-size:24px;line-height:32px;font-weight:600;letter-spacing:-.01em;font-variation-settings:"opsz" 24}.mu-heading-1{font-family:var(--font-display);font-size:32px;line-height:40px;font-weight:600;letter-spacing:-.01em;font-variation-settings:"opsz" 32}.mu-display{font-family:var(--font-display);font-size:40px;line-height:48px;font-weight:600;letter-spacing:-.02em;font-variation-settings:"opsz" 32}.mu-prose{--prose-fs: 15px;--prose-lh: 24px;--prose-h1: 20px;--prose-h1-lh: 28px;--prose-h2: 17px;--prose-h2-lh: 24px;--prose-head: 12px;--prose-head-lh: 16px}.mu-prose-sm{--prose-fs: 14px;--prose-lh: 22px}.mu-spinner{display:inline-block;flex:none;box-sizing:border-box;width:var(--icon);height:var(--icon);border:var(--icon-stroke) solid currentColor;border-top-color:transparent;border-radius:var(--radius-full);animation:mu-spin var(--duration-spin) linear infinite}@keyframes mu-spin{to{rotate:1turn}}.mu-button{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--gap);box-sizing:border-box;height:var(--h);margin:0;padding:0 var(--px);border:0;border-radius:var(--r);color:var(--ink);background-color:var(--key);background-image:linear-gradient(180deg,var(--key-sheen),transparent 60%);box-shadow:var(--shadow-raised);white-space:nowrap;text-decoration:none;cursor:pointer;user-select:none;transition-property:background-color,box-shadow,color,translate;transition-duration:var(--duration-press);transition-timing-function:var(--ease-out)}.mu-button:has(>svg:first-child){padding-inline-start:var(--pxi)}.mu-button.mu-button-icon{width:var(--h);padding:0}.mu-button-label{min-width:0;overflow:hidden;text-overflow:ellipsis}@media(hover:hover){.mu-button:hover:not([data-disabled]){background-color:var(--key-hover)}.mu-button-primary:hover:not([data-disabled]){background-color:var(--primary-hover)}.mu-button-danger:hover:not([data-disabled]){background-color:var(--danger-key);filter:brightness(1.08)}.mu-button-ghost:hover:not([data-disabled]){background-color:var(--hover);color:var(--ink)}}.mu-button:active:not([data-disabled]){translate:0 .5px;box-shadow:var(--shadow-pressed)}.mu-button-primary{color:var(--on-primary);background-color:var(--primary)}.mu-button-danger{color:var(--on-danger);background-color:var(--danger-key)}.mu-button-ghost{color:var(--ink-muted);background-color:transparent;background-image:none;box-shadow:none}.mu-button-ghost[data-popup-open]{background-color:var(--hover);color:var(--ink)}.mu-button-ghost:active:not([data-disabled]){translate:none;background-color:var(--well);box-shadow:var(--shadow-track)}.mu-button[data-disabled]:not([data-loading]){opacity:.45;cursor:not-allowed}.mu-button[data-loading]{cursor:progress}.mu-button[data-loading]>:not(.mu-spinner){opacity:0}.mu-button>.mu-spinner{position:absolute;inset:0;margin:auto}@media(prefers-reduced-motion:reduce){.mu-button:active:not([data-disabled]){translate:none}}.mu-kbd{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:calc(var(--control-sm) - 2 * var(--inset));height:calc(var(--control-sm) - 2 * var(--inset));padding:0 var(--space-1);border-radius:var(--radius-sm);color:var(--ink-muted);background-color:var(--key);background-image:linear-gradient(180deg,var(--key-sheen),transparent 60%);box-shadow:var(--shadow-raised);white-space:nowrap}.mu-separator{flex:none;align-self:stretch;margin:0;border:0;background-color:var(--line)}.mu-separator[data-orientation=horizontal]{height:1px}.mu-separator[data-orientation=vertical]{width:1px}.mu-badge{--icon: calc(var(--icon-sm) - var(--inset));display:inline-flex;align-items:center;gap:var(--space-1);box-sizing:border-box;height:calc(var(--control-sm) - 2 * var(--inset));padding:0 calc(var(--space-1) + var(--inset));border-radius:var(--radius-sm);white-space:nowrap;vertical-align:middle}.mu-badge-neutral{color:var(--ink);background-color:var(--well)}.mu-badge-outline{color:var(--ink-muted);box-shadow:inset 0 0 0 1px var(--edge)}.mu-badge-success{color:var(--success);background-color:var(--success-soft)}.mu-badge-warning{color:var(--warning);background-color:var(--warning-soft)}.mu-badge-danger{color:var(--danger);background-color:var(--danger-soft)}.mu-avatar-root{display:inline-flex;flex:none;align-items:center;justify-content:center;overflow:hidden;box-sizing:border-box;width:var(--h);height:var(--h);border-radius:var(--radius-full);color:var(--ink-muted);background-color:var(--well);vertical-align:middle;user-select:none}.mu-avatar-image{width:100%;height:100%;object-fit:cover}.mu-avatar-fallback{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.mu-link{color:var(--accent);text-decoration:none;text-underline-offset:.2em;border-radius:var(--radius-xs);cursor:pointer}.mu-link:hover,.mu-link:focus-visible,.mu-link-underline{text-decoration:underline}[data-theme=contrast] .mu-link{text-decoration:underline}.mu-link-muted{color:var(--ink-muted)}.mu-link-muted:hover{color:var(--ink)}.mu-link>.mu-icon{display:inline-block;width:.85em;height:.85em;margin-inline-start:.1em;vertical-align:-.05em}.mu-skeleton{box-sizing:border-box;width:100%;height:var(--lh);border-radius:var(--radius-sm);background-color:var(--well);background-image:linear-gradient(90deg,transparent 0%,var(--hover) 50%,transparent 100%);background-size:200% 100%;background-repeat:no-repeat;animation:mu-shimmer var(--duration-shimmer) ease-in-out infinite}.mu-skeleton-round{width:var(--h);height:var(--h);border-radius:var(--radius-full)}@keyframes mu-shimmer{0%{background-position:150% 0}to{background-position:-50% 0}}@media(prefers-reduced-motion:reduce){.mu-skeleton{animation:none;background-image:none}}.mu-field-root{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.mu-field-label{color:var(--ink)}.mu-field-item{display:flex}.mu-field-label:has(>.mu-checkbox,>.mu-switch,>.mu-radio){display:inline-flex;align-items:center;gap:var(--space-2);font-weight:400;cursor:pointer}.mu-field-label[data-disabled]{opacity:.45;cursor:not-allowed}.mu-field-description{margin:0;color:var(--ink-muted)}.mu-field-root[data-invalid]>.mu-field-description{display:none}.mu-field-error{display:flex;align-items:flex-start;gap:var(--space-1);color:var(--danger)}.mu-field-error>.mu-icon{--icon: var(--icon-sm);margin-block:calc((1lh - var(--icon-sm)) / 2)}.mu-fieldset-root{display:flex;flex-direction:column;gap:var(--space-3);min-width:0;margin:0;padding:0;border:0}.mu-fieldset-legend{margin-bottom:var(--space-1);padding:0;color:var(--ink)}.mu-input-root{display:flex;align-items:center;gap:var(--gap);box-sizing:border-box;width:100%;min-width:0;height:var(--h);padding:0 var(--px);border-radius:var(--r);color:var(--ink);background-color:var(--surface);box-shadow:inset 0 0 0 1px var(--edge),var(--shadow-track);cursor:text;transition:box-shadow var(--duration-fade) var(--ease-out)}.mu-input-root:has(>.mu-input-prefix){padding-inline-start:var(--pxi)}.mu-input-root:has(>.mu-input-suffix){padding-inline-end:var(--pxi)}@media(hover:hover){.mu-input-root:hover:not(:has(>[data-disabled])){box-shadow:inset 0 0 0 1px var(--ink-muted),var(--shadow-track)}}.mu-input-root:has(>.mu-input:focus){outline:var(--focus-width) solid var(--focus);outline-offset:var(--focus-width)}.mu-input-root:has(>[data-invalid]){box-shadow:inset 0 0 0 1px var(--danger),var(--shadow-track)}.mu-input-root:has(>[data-disabled]){opacity:.45;cursor:not-allowed}.mu-input{flex:1;min-width:0;height:100%;margin:0;padding:0;border:0;outline:none;color:inherit;background:none;font:inherit;font-weight:400}.mu-input::placeholder{color:var(--ink-muted);opacity:1}.mu-input[data-disabled]{cursor:not-allowed}.mu-input-prefix,.mu-input-suffix{display:flex;flex:none;align-items:center;gap:var(--space-1);color:var(--ink-muted)}.mu-textarea{display:block;box-sizing:border-box;width:100%;min-height:var(--h);margin:0;padding:calc((var(--h) - var(--lh)) / 2) var(--px);border:0;border-radius:var(--r);color:var(--ink);background-color:var(--surface);box-shadow:inset 0 0 0 1px var(--edge),var(--shadow-track);font-weight:400;resize:vertical;transition:box-shadow var(--duration-fade) var(--ease-out)}.mu-textarea::placeholder{color:var(--ink-muted);opacity:1}@media(hover:hover){.mu-textarea:hover:not([data-disabled]){box-shadow:inset 0 0 0 1px var(--ink-muted),var(--shadow-track)}}.mu-textarea:focus{outline:var(--focus-width) solid var(--focus);outline-offset:var(--focus-width)}.mu-textarea[data-invalid]{box-shadow:inset 0 0 0 1px var(--danger),var(--shadow-track)}.mu-textarea[data-disabled]{opacity:.45;cursor:not-allowed}.mu-checkbox{display:inline-flex;flex:none;align-items:center;justify-content:center;box-sizing:border-box;width:var(--box);height:var(--box);border-radius:var(--radius-sm);color:var(--on-primary);background-color:var(--well);box-shadow:inset 0 0 0 1px var(--edge),var(--shadow-track);cursor:pointer;transition-property:background-color,box-shadow,scale;transition-duration:var(--duration-press);transition-timing-function:var(--ease-out)}.mu-checkbox[data-checked],.mu-checkbox[data-indeterminate]{background-color:var(--primary);box-shadow:none}.mu-checkbox[data-invalid]{box-shadow:inset 0 0 0 1px var(--danger),var(--shadow-track)}.mu-checkbox:active:not([data-disabled],[data-readonly]){scale:.94}.mu-checkbox[data-disabled]{opacity:.45;cursor:not-allowed}.mu-checkbox-indicator{display:flex;transition:opacity var(--duration-fade) var(--ease-out) var(--duration-press),scale var(--duration-fade) var(--ease-out) var(--duration-press)}.mu-checkbox-indicator[data-starting-style],.mu-checkbox-indicator[data-ending-style]{opacity:0;scale:.6}.mu-checkbox-indicator>svg{width:calc(var(--box) - 2 * var(--inset));height:calc(var(--box) - 2 * var(--inset));stroke-width:2}.mu-checkbox-indicator>svg *{vector-effect:non-scaling-stroke}@media(prefers-reduced-motion:reduce){.mu-checkbox:active:not([data-disabled],[data-readonly]){scale:none}.mu-checkbox-indicator[data-starting-style],.mu-checkbox-indicator[data-ending-style]{scale:none}}.mu-switch{--switch-h: calc(var(--box) + var(--inset));--switch-w: calc(var(--switch-h) * 1.7);--knob: calc(var(--switch-h) - 2 * var(--inset));position:relative;display:inline-flex;flex:none;align-items:center;box-sizing:border-box;width:var(--switch-w);height:var(--switch-h);padding:var(--inset);border-radius:var(--radius-full);background-color:var(--well);box-shadow:inset 0 0 0 1px var(--edge),var(--shadow-track);cursor:pointer;transition:background-color var(--duration-settle) var(--ease-settle),box-shadow var(--duration-settle) var(--ease-settle)}.mu-switch[data-checked]{background-color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary)}.mu-switch[data-invalid]{box-shadow:inset 0 0 0 1px var(--danger),var(--shadow-track)}.mu-switch[data-disabled]{opacity:.45;cursor:not-allowed}.mu-switch-thumb{display:block;width:var(--knob);height:var(--knob);border-radius:var(--radius-full);background-color:var(--key);background-image:linear-gradient(180deg,var(--key-sheen),transparent 60%);box-shadow:var(--shadow-key);transition:translate var(--duration-settle) var(--ease-settle),scale var(--duration-press) var(--ease-out),background-color var(--duration-settle) var(--ease-settle)}.mu-switch-thumb[data-checked]{translate:calc(var(--switch-w) - var(--switch-h)) 0;background-color:var(--on-primary)}.mu-switch:active:not([data-disabled],[data-readonly])>.mu-switch-thumb{scale:1.1}@media(prefers-reduced-motion:reduce){.mu-switch-thumb{transition-property:background-color}.mu-switch:active:not([data-disabled],[data-readonly])>.mu-switch-thumb{scale:none}}.mu-radio-group{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-3)}.mu-radio-group[data-orientation=horizontal]{flex-direction:row;flex-wrap:wrap;gap:var(--space-3) var(--space-4)}.mu-radio-group[data-orientation=horizontal]>.mu-fieldset-legend{flex-basis:100%}.mu-radio{display:inline-flex;flex:none;align-items:center;justify-content:center;box-sizing:border-box;width:var(--box);height:var(--box);border-radius:var(--radius-full);background-color:var(--well);box-shadow:inset 0 0 0 1px var(--edge),var(--shadow-track);cursor:pointer;transition-property:background-color,box-shadow,scale;transition-duration:var(--duration-press);transition-timing-function:var(--ease-out)}.mu-radio[data-checked]{background-color:var(--primary);box-shadow:none}.mu-radio[data-invalid]{box-shadow:inset 0 0 0 1px var(--danger),var(--shadow-track)}.mu-radio:active:not([data-disabled],[data-readonly]){scale:.94}.mu-radio[data-disabled]{opacity:.45;cursor:not-allowed}.mu-radio-indicator{width:calc(var(--box) / 2.5);height:calc(var(--box) / 2.5);border-radius:var(--radius-full);background-color:var(--on-primary);transition:opacity var(--duration-fade) var(--ease-out) var(--duration-press),scale var(--duration-fade) var(--ease-out) var(--duration-press)}.mu-radio-indicator[data-starting-style],.mu-radio-indicator[data-ending-style]{opacity:0;scale:.4}@media(prefers-reduced-motion:reduce){.mu-radio:active:not([data-disabled],[data-readonly]){scale:none}.mu-radio-indicator[data-starting-style],.mu-radio-indicator[data-ending-style]{scale:none}}.mu-toggle{position:relative;display:inline-flex;flex:none;align-items:center;justify-content:center;gap:var(--gap);box-sizing:border-box;height:var(--h);margin:0;padding:0 var(--px);border:0;border-radius:var(--r);color:var(--ink-muted);background-color:transparent;white-space:nowrap;cursor:pointer;user-select:none;transition-property:background-color,box-shadow,color;transition-duration:var(--duration-press);transition-timing-function:var(--ease-out)}.mu-toggle:has(>svg:first-child){padding-inline-start:var(--pxi)}.mu-toggle.mu-toggle-icon{width:var(--h);padding:0}@media(hover:hover){.mu-toggle:hover:not([data-disabled]){color:var(--ink);background-color:var(--hover)}}.mu-toggle[data-pressed],.mu-toggle:active:not([data-disabled]){color:var(--ink);background-color:var(--well);box-shadow:inset 0 0 0 1px var(--edge),var(--shadow-track)}.mu-toggle[data-disabled]{opacity:.45;cursor:not-allowed}.mu-segmented{position:relative;display:inline-flex;align-items:stretch;gap:0;box-sizing:border-box;height:var(--h);padding:var(--inset);border-radius:var(--r);background-color:var(--well);box-shadow:inset 0 0 0 1px var(--edge),var(--shadow-track)}.mu-segmented-key{position:absolute;top:var(--inset);left:0;width:var(--key-width);height:calc(var(--h) - 2 * var(--inset));translate:var(--key-left) 0;border-radius:calc(var(--r) - var(--inset));background-color:var(--key);background-image:linear-gradient(180deg,var(--key-sheen),transparent 60%);box-shadow:var(--shadow-key);transition:translate var(--duration-settle) var(--ease-settle),width var(--duration-settle) var(--ease-settle)}.mu-toggle-group.mu-segmented:not([data-keyed])>.mu-segmented-key{display:none}.mu-tabs-indicator{--key-left: var(--active-tab-left);--key-width: var(--active-tab-width)}.mu-segmented-item,.mu-segmented>.mu-toggle{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--gap);box-sizing:border-box;height:100%;margin:0;padding:0 calc(var(--px) - var(--inset));border:0;border-radius:calc(var(--r) - var(--inset));color:var(--ink-muted);background:none;box-shadow:none;font:inherit;white-space:nowrap;cursor:pointer;user-select:none;transition:color var(--duration-fade) var(--ease-out)}.mu-segmented>.mu-toggle.mu-toggle-icon{width:calc(var(--h) - 2 * var(--inset));padding:0}@media(hover:hover){.mu-segmented-item:hover:not([data-disabled]),.mu-segmented>.mu-toggle:hover:not([data-disabled]){color:var(--ink);background:none}}.mu-segmented-item[data-active],.mu-segmented>.mu-toggle[data-pressed],.mu-segmented>.mu-toggle:active:not([data-disabled]){color:var(--ink);background:none;box-shadow:none}.mu-segmented-item[data-disabled]{opacity:.45;cursor:not-allowed}.mu-tabs-root{display:flex;flex-direction:column;gap:var(--space-4)}.mu-tabs-list{align-self:flex-start}.mu-tabs-panel{border-radius:var(--radius-sm)}@media(prefers-reduced-motion:reduce){.mu-segmented-key{transition:none}}.mu-toggle-group{display:inline-flex;align-items:center;gap:var(--inset)}.mu-toggle-group>.mu-separator{align-self:center;height:calc(var(--h) - 2 * var(--space-2));margin-inline:var(--space-1)}.mu-tooltip-popup{display:flex;align-items:center;gap:var(--space-2);box-sizing:border-box;max-width:var(--tooltip-width);padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);color:var(--on-primary);background-color:var(--primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.mu-tooltip-shortcut{opacity:.65}.mu-popover-popup{display:flex;flex-direction:column;gap:var(--space-3);box-sizing:border-box;width:var(--popover-width);max-width:var(--available-width);padding:var(--space-4);outline:0}.mu-popover-title{margin:0;color:var(--ink)}.mu-popover-description{margin:calc(-1 * var(--space-2)) 0 0;color:var(--ink-muted)}.mu-menu-popup{box-sizing:border-box;min-width:var(--menu-width);max-height:var(--available-height);overflow-y:auto;padding:var(--space-1);outline:0}.mu-menu-item{display:flex;align-items:center;gap:var(--space-2);box-sizing:border-box;height:var(--h);padding:0 var(--px);border-radius:calc(var(--radius-xl) - var(--space-1));color:var(--ink);font-weight:400;white-space:nowrap;cursor:default;user-select:none;outline:0}.mu-menu-item:has(>svg:first-child){padding-inline-start:var(--pxi)}.mu-menu-item>svg{color:var(--ink-muted)}.mu-menu-item[data-highlighted],.mu-menu-submenu-trigger[data-popup-open]{background-color:var(--hover)}.mu-menu-item[data-disabled]{opacity:.45}.mu-menu-item-danger,.mu-menu-item-danger>svg{color:var(--danger)}.mu-menu-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.mu-menu-shortcut{margin-inline-start:var(--space-4);color:var(--ink-muted)}.mu-menu-indicator{display:grid;flex:none;place-items:center;width:var(--icon);height:var(--icon);margin-inline-start:var(--space-2)}.mu-menu-indicator>svg{color:var(--ink)}.mu-menu-chevron{margin-inline-end:calc(var(--pxi) - var(--px));color:var(--ink-muted)}.mu-menu-group-label{padding:var(--space-2) var(--px) var(--space-1);color:var(--ink-muted)}.mu-menu-separator{height:1px;margin:var(--space-1) calc(-1 * var(--space-1));background-color:var(--line)}.mu-select-trigger{justify-content:space-between;min-width:0;padding-inline-end:var(--pxi);text-align:start}.mu-select-value{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mu-select-value[data-placeholder]{color:var(--ink-muted);font-weight:400}.mu-select-icon{display:flex;flex:none;color:var(--ink-muted)}.mu-select-trigger[data-invalid]{box-shadow:inset 0 0 0 1px var(--danger),var(--shadow-key)}.mu-select-positioner{outline:0}.mu-select-popup{box-sizing:border-box;min-width:max(var(--menu-width),var(--anchor-width));max-height:var(--available-height);padding:var(--space-1);outline:0}.mu-select-list{overflow-y:auto;max-height:var(--available-height);scroll-padding-block:var(--space-1);outline:0}.mu-select-item{display:flex;align-items:center;gap:var(--space-2);box-sizing:border-box;height:var(--h);padding:0 var(--px);border-radius:calc(var(--radius-xl) - var(--space-1));color:var(--ink);font-weight:400;white-space:nowrap;cursor:default;user-select:none;outline:0}.mu-select-item:has(>svg:first-child){padding-inline-start:var(--pxi)}.mu-select-item>svg{color:var(--ink-muted)}.mu-select-item[data-highlighted]{background-color:var(--hover)}.mu-select-item[data-disabled]{opacity:.45}.mu-select-item-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.mu-select-indicator{display:grid;flex:none;place-items:center;width:var(--icon);height:var(--icon);margin-inline-start:var(--space-2);color:var(--ink)}.mu-select-group-label{padding:var(--space-2) var(--px) var(--space-1);color:var(--ink-muted)}.mu-select-separator{height:1px;margin:var(--space-1) calc(-1 * var(--space-1));background-color:var(--line)}.mu-select-scroll-arrow{display:grid;place-items:center;height:var(--space-4);color:var(--ink-muted)}.mu-dialog-backdrop{position:fixed;inset:0;z-index:var(--layer-overlay);background-color:var(--overlay);transition:opacity var(--duration-settle) var(--ease-out)}.mu-dialog-backdrop[data-starting-style],.mu-dialog-backdrop[data-ending-style]{opacity:0}.mu-dialog-viewport{position:fixed;inset:0;z-index:var(--layer-overlay);display:grid;place-items:safe center;box-sizing:border-box;padding:var(--space-6) var(--space-4);overflow-y:auto}.mu-dialog-popup{position:relative;display:flex;flex-direction:column;gap:var(--space-4);box-sizing:border-box;width:var(--dialog-width);max-width:100%;padding:var(--space-5);border-radius:var(--radius-2xl);outline:0;transition:opacity var(--duration-settle) var(--ease-out),translate var(--duration-settle) var(--ease-out)}.mu-dialog-popup[data-starting-style],.mu-dialog-popup[data-ending-style]{opacity:0;translate:0 var(--space-1)}.mu-dialog-popup:has(>.mu-dialog-x)>.mu-dialog-title{padding-inline-end:var(--space-6)}.mu-dialog-title{margin:0;color:var(--ink)}.mu-dialog-description{margin:calc(-1 * var(--space-2)) 0 0;color:var(--ink-muted)}.mu-dialog-x{position:absolute;top:var(--space-4);right:var(--space-4)}.mu-dialog-footer{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-2)}@media(max-width:639.98px){.mu-dialog-sheet{place-items:end stretch;padding:var(--space-6) 0 0}.mu-dialog-sheet>.mu-dialog-popup{width:100%;padding-bottom:max(var(--space-5),env(safe-area-inset-bottom));border-end-start-radius:0;border-end-end-radius:0}.mu-dialog-sheet>.mu-dialog-popup[data-starting-style],.mu-dialog-sheet>.mu-dialog-popup[data-ending-style]{translate:0 var(--space-6)}.mu-dialog-sheet .mu-dialog-footer{flex-direction:column-reverse}.mu-dialog-sheet .mu-dialog-footer>*{width:100%}}@media(prefers-reduced-motion:reduce){.mu-dialog-popup[data-starting-style],.mu-dialog-popup[data-ending-style],.mu-dialog-sheet>.mu-dialog-popup[data-starting-style],.mu-dialog-sheet>.mu-dialog-popup[data-ending-style]{translate:none}}.mu-toast-viewport{position:fixed;right:var(--space-6);bottom:var(--space-6);z-index:var(--layer-toast);width:var(--toast-width);outline:0}@media(max-width:639.98px){.mu-toast-viewport{right:var(--space-4);bottom:var(--space-4);left:var(--space-4);width:auto}}.mu-toast{--gap: var(--space-3);--peek: var(--space-2);--scale: max(0, 1 - var(--toast-index) * .05);--shrink: calc(1 - var(--scale));--height: var(--toast-frontmost-height, var(--toast-height));--offset-y: calc(var(--toast-offset-y) * -1 - var(--toast-index) * var(--gap) + var(--toast-swipe-movement-y));position:absolute;right:0;bottom:0;z-index:calc(var(--layer-toast) - var(--toast-index));box-sizing:border-box;width:100%;height:var(--height);transform-origin:bottom center;translate:var(--toast-swipe-movement-x) calc(var(--toast-swipe-movement-y) - var(--toast-index) * var(--peek) - var(--shrink) * var(--height));scale:var(--scale);user-select:none;outline:0;transition:translate var(--duration-settle) var(--ease-settle),scale var(--duration-settle) var(--ease-settle),opacity var(--duration-settle) var(--ease-out),height var(--duration-fade) var(--ease-out)}.mu-toast[data-expanded]{height:var(--toast-height);translate:var(--toast-swipe-movement-x) var(--offset-y);scale:1}.mu-toast[data-starting-style],.mu-toast[data-ending-style]{translate:0 150%}.mu-toast[data-ending-style]{opacity:0}.mu-toast[data-ending-style][data-swipe-direction=up]{translate:0 calc(var(--toast-swipe-movement-y) - 150%)}.mu-toast[data-ending-style][data-swipe-direction=down]{translate:0 calc(var(--toast-swipe-movement-y) + 150%)}.mu-toast[data-ending-style][data-swipe-direction=left]{translate:calc(var(--toast-swipe-movement-x) - 150%) var(--offset-y)}.mu-toast[data-ending-style][data-swipe-direction=right]{translate:calc(var(--toast-swipe-movement-x) + 150%) var(--offset-y)}.mu-toast[data-limited]{opacity:0}.mu-toast:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:var(--focus-width)}.mu-toast:after{content:"";position:absolute;top:100%;left:0;width:100%;height:calc(var(--gap) + 1px)}.mu-toast-content{display:flex;align-items:flex-start;gap:var(--space-3);box-sizing:border-box;height:100%;padding:var(--space-3) var(--space-3) var(--space-3) var(--space-4);overflow:hidden;transition:opacity var(--duration-settle) var(--ease-out)}.mu-toast-content[data-behind]{opacity:0}.mu-toast-content[data-expanded]{opacity:1}.mu-toast-icon{margin-block:calc((var(--h) - var(--icon)) / 2);color:var(--ink-muted)}.mu-toast-success .mu-toast-icon{color:var(--success)}.mu-toast-warning .mu-toast-icon{color:var(--warning)}.mu-toast-danger .mu-toast-icon{color:var(--danger)}.mu-toast-text{display:flex;flex:1;flex-direction:column;min-width:0;padding-block:calc((var(--h) - var(--lh)) / 2)}.mu-toast-title{margin:0;color:var(--ink)}.mu-toast-description{margin:0;color:var(--ink-muted)}.mu-toast-action,.mu-toast-close{margin-block:calc((var(--control-md) - var(--control-sm)) / 2)}@media(prefers-reduced-motion:reduce){.mu-toast{transition-property:opacity,height}.mu-toast[data-starting-style],.mu-toast[data-ending-style]{translate:var(--toast-swipe-movement-x) var(--offset-y)}}.mu-input-root.mu-combobox-input-root{padding-inline-end:calc(var(--pxi) - var(--space-1))}.mu-combobox-trigger{display:grid;place-items:center;width:calc(var(--icon) + var(--space-2));height:calc(var(--icon) + var(--space-2));margin:0;padding:0;border:0;border-radius:var(--radius-sm);color:var(--ink-muted);background:none;cursor:pointer}.mu-combobox-trigger:hover:not([data-disabled]){color:var(--ink)}.mu-combobox-trigger[data-disabled]{cursor:not-allowed}.mu-combobox-popup{box-sizing:border-box;width:var(--anchor-width);min-width:var(--menu-width);max-width:var(--available-width);outline:0}.mu-combobox-list{box-sizing:border-box;max-height:min(var(--list-height),var(--available-height));overflow-y:auto;overscroll-behavior:contain;padding:var(--space-1);scroll-padding-block:var(--space-1);outline:0}.mu-combobox-list[data-empty]{padding:0}.mu-combobox-item{display:flex;align-items:center;gap:var(--space-2);box-sizing:border-box;height:var(--h);padding:0 var(--px);border-radius:calc(var(--radius-xl) - var(--space-1));color:var(--ink);font-weight:400;white-space:nowrap;cursor:default;user-select:none;outline:0}.mu-combobox-item:has(>svg:first-child){padding-inline-start:var(--pxi)}.mu-combobox-item>svg{color:var(--ink-muted)}.mu-combobox-item[data-highlighted]{background-color:var(--hover)}.mu-combobox-item[data-disabled]{opacity:.45}.mu-combobox-item-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.mu-combobox-indicator{display:grid;flex:none;place-items:center;width:var(--icon);height:var(--icon);margin-inline-start:var(--space-2);color:var(--ink)}.mu-combobox-empty:not(:empty){padding:var(--space-3) var(--space-4);color:var(--ink-muted)}.mu-combobox-group-label{padding:var(--space-2) var(--px) var(--space-1);color:var(--ink-muted)}.mu-combobox-separator{height:1px;margin:var(--space-1) calc(-1 * var(--space-1));background-color:var(--line)}.mu-button.mu-collapsible-trigger{margin-inline-start:calc(-1 * var(--px));padding-inline-end:var(--pxi)}.mu-collapsible-chevron{color:var(--ink-muted);transition:rotate var(--duration-settle) var(--ease-settle)}.mu-collapsible-trigger[data-panel-open]>.mu-collapsible-chevron{rotate:180deg}.mu-collapsible-panel{transition:opacity var(--duration-fade) var(--ease-out),translate var(--duration-fade) var(--ease-out)}.mu-collapsible-panel[data-starting-style],.mu-collapsible-panel[data-ending-style]{opacity:0;translate:0 var(--space-1)}@media(prefers-reduced-motion:reduce){.mu-collapsible-chevron{transition:none}.mu-collapsible-panel[data-starting-style],.mu-collapsible-panel[data-ending-style]{translate:none}}.mu-table-scroll{overflow-x:auto;max-width:100%}.mu-table{width:100%;border-collapse:collapse;color:var(--ink);font-variant-numeric:tabular-nums;text-align:start}.mu-table-head,.mu-table-cell{padding:0 var(--px);text-align:start;vertical-align:middle}.mu-table-head{height:var(--h);color:var(--ink-muted);white-space:nowrap;border-bottom:1px solid var(--line)}.mu-table-cell{padding-block:calc((var(--h) - var(--lh)) / 2 + var(--space-1))}.mu-table-body>.mu-table-row+.mu-table-row>.mu-table-cell{border-top:1px solid var(--line)}.mu-table-body>.mu-table-row:hover>.mu-table-cell{background-color:var(--hover)}.mu-table-cell>.mu-button{margin-block:calc((var(--lh) - var(--h)) / 2);vertical-align:top}.mu-table-num{text-align:end}.mu-table-muted{color:var(--ink-muted)}.mu-table-caption{caption-side:bottom;padding:var(--space-2) var(--px) 0;color:var(--ink-muted);text-align:start}.mu-prose{color:var(--ink);font-family:var(--font-sans);font-size:var(--prose-fs);line-height:var(--prose-lh);font-weight:400;overflow-wrap:break-word;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.mu-prose ::selection{background:var(--selection)}.mu-prose :where(p,ul,ol,pre,blockquote,table,figure,img,video,hr){margin:0 0 var(--space-3)}.mu-prose :where(h1,h2,h3,h4,h5,h6){margin:var(--space-5) 0 var(--space-2);font-family:var(--font-display);font-weight:600;letter-spacing:0}.mu-prose>:first-child{margin-top:0}.mu-prose>:last-child{margin-bottom:0}.mu-prose h1{font-size:var(--prose-h1);line-height:var(--prose-h1-lh);font-variation-settings:"opsz" 20}.mu-prose h2{font-size:var(--prose-h2);line-height:var(--prose-h2-lh)}.mu-prose :where(h3,h4,h5,h6){font-size:var(--prose-fs);line-height:var(--prose-lh)}.mu-prose :where(strong,b){font-weight:600}.mu-prose del{color:var(--ink-muted)}.mu-prose a{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;border-radius:var(--radius-xs)}.mu-prose a:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:var(--focus-width)}.mu-prose :where(ul,ol){padding-inline-start:var(--space-6)}.mu-prose li+li{margin-top:var(--space-1)}.mu-prose li>:where(ul,ol){margin:var(--space-1) 0 0}.mu-prose li>p{margin:0}.mu-prose li::marker{color:var(--ink-muted)}.mu-prose li:has(>input[type=checkbox]:first-child){position:relative;list-style:none}.mu-prose li>input[type=checkbox]:first-child{appearance:none;position:absolute;inset-inline-start:calc(-1 * (var(--space-4) + var(--space-2)));top:calc((var(--prose-lh) - var(--space-4)) / 2);box-sizing:border-box;width:var(--space-4);height:var(--space-4);margin:0;border-radius:var(--radius-sm);background-color:var(--well);box-shadow:inset 0 0 0 1px var(--edge),var(--shadow-track);cursor:pointer}.mu-prose li>input[type=checkbox]:first-child:disabled{cursor:default}.mu-prose li>input[type=checkbox]:first-child:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:var(--focus-width)}.mu-prose li>input[type=checkbox]:first-child:checked{background-color:var(--primary);box-shadow:none}.mu-prose li>input[type=checkbox]:first-child:checked:after{content:"";position:absolute;inset:var(--inset);background-color:var(--on-primary);mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat}.mu-prose li:has(>input[type=checkbox]:first-child:checked){color:var(--ink-muted);text-decoration:line-through}.mu-prose :where(code,kbd,samp,pre){font-family:var(--font-mono);font-size:.875em}.mu-prose :not(pre)>code{padding:.1em .3em;border-radius:var(--radius-xs);background-color:var(--well)}.mu-prose pre{overflow-x:auto;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background-color:var(--well);line-height:1.6}.mu-prose pre>code{font-size:inherit}.mu-prose blockquote{margin-inline:0;padding-inline-start:var(--space-4);border-inline-start:var(--inset) solid var(--edge);color:var(--ink-muted)}.mu-prose hr{height:1px;margin-block:var(--space-5);border:0;background-color:var(--line)}.mu-prose :where(img,video){display:block;max-width:100%;height:auto;border-radius:var(--radius-lg)}.mu-prose table{display:block;width:max-content;max-width:100%;overflow-x:auto;border-collapse:collapse;font-variant-numeric:tabular-nums}.mu-prose :where(th,td){padding:var(--space-2) var(--space-3);text-align:start;vertical-align:top}.mu-prose th{color:var(--ink-muted);font-size:var(--prose-head);line-height:var(--prose-head-lh);font-weight:500;white-space:nowrap;border-bottom:1px solid var(--line)}.mu-prose tr+tr>td{border-top:1px solid var(--line)}.mu-prose-tag{padding:0 .25em;border-radius:var(--radius-xs);color:var(--ink-muted);background-color:var(--well)}
1
+ @layer mu{.mu-s-sm{--h: var(--mu-control-sm);--px: var(--mu-space-2);--pxi: 6px;--fs: 12px;--lh: 16px;--r: var(--mu-radius-sm);--gap: var(--mu-space-1);--icon: var(--mu-icon-sm);--icon-stroke: 1.25px;--box: 16px}.mu-s-md{--h: var(--mu-control-md);--px: var(--mu-space-3);--pxi: 10px;--fs: 14px;--lh: 20px;--r: var(--mu-radius-md);--gap: 6px;--icon: var(--mu-icon-md);--icon-stroke: 1.5px;--box: 18px}.mu-s-lg{--h: var(--mu-control-lg);--px: var(--mu-space-4);--pxi: var(--mu-space-3);--fs: 16px;--lh: 24px;--r: var(--mu-radius-lg);--gap: var(--mu-space-2);--icon: var(--mu-icon-lg);--icon-stroke: 1.5px;--box: 20px}.mu-recessed{background-color:var(--mu-well);box-shadow:inset 0 0 0 1px var(--mu-edge),var(--mu-shadow-track)}.mu-raised{background-color:var(--mu-key);background-image:linear-gradient(180deg,var(--mu-key-sheen),rgba(255,255,255,0) 60%);box-shadow:var(--mu-shadow-raised)}.mu-key{background-color:var(--mu-key);background-image:linear-gradient(180deg,var(--mu-key-sheen),rgba(255,255,255,0) 60%);box-shadow:var(--mu-shadow-key)}.mu-popup{background:var(--mu-surface);box-shadow:var(--mu-shadow-pop);border-radius:var(--mu-radius-xl)}.mu-positioner{z-index:var(--mu-layer-popup);outline:0}.mu-popup-motion{transition:opacity var(--mu-duration-fade) var(--mu-ease-out),translate var(--mu-duration-fade) var(--mu-ease-out)}.mu-popup-motion[data-starting-style],.mu-popup-motion[data-ending-style]{opacity:0;translate:0 var(--mu-space-1)}.mu-popup-motion[data-instant]{transition:none}@media(prefers-reduced-motion:reduce){.mu-popup-motion[data-starting-style],.mu-popup-motion[data-ending-style]{translate:none}}.mu-base{font-family:var(--mu-font-sans);font-size:var(--fs, 14px);line-height:var(--lh, 20px);font-weight:500;letter-spacing:0;color:var(--mu-ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent}.mu-base ::selection,.mu-base::selection{background:var(--mu-selection)}.mu-visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.mu-focus:focus-visible{outline:var(--mu-focus-width) solid var(--mu-focus);outline-offset:var(--mu-focus-width)}.mu-hit{position:relative}@media(pointer:coarse){.mu-hit:after{content:"";position:absolute;left:50%;top:50%;width:max(100%,var(--mu-hit-area));height:max(100%,var(--mu-hit-area));transform:translate(-50%,-50%)}}.mu-icon,.mu-base svg.lucide,.mu-prose svg.lucide{width:var(--icon, 16px);height:var(--icon, 16px);flex:none;display:block;stroke-width:var(--icon-stroke, 1.5px)}.mu-icon *,.mu-base svg.lucide *,.mu-prose svg.lucide *{vector-effect:non-scaling-stroke}.mu-label-xs{font-family:var(--mu-font-sans);font-size:11px;line-height:16px;font-weight:500}.mu-caption{font-family:var(--mu-font-sans);font-size:12px;line-height:16px;font-weight:400}.mu-label-sm{font-family:var(--mu-font-sans);font-size:12px;line-height:16px;font-weight:500}.mu-body-sm{font-family:var(--mu-font-sans);font-size:13px;line-height:18px;font-weight:400}.mu-body{font-family:var(--mu-font-sans);font-size:14px;line-height:20px;font-weight:400}.mu-label{font-family:var(--mu-font-sans);font-size:14px;line-height:20px;font-weight:500}.mu-body-lg{font-family:var(--mu-font-sans);font-size:16px;line-height:24px;font-weight:400}.mu-label-lg{font-family:var(--mu-font-sans);font-size:16px;line-height:24px;font-weight:500}.mu-title{font-family:var(--mu-font-display);font-size:18px;line-height:28px;font-weight:600}.mu-heading-3{font-family:var(--mu-font-display);font-size:20px;line-height:28px;font-weight:600}.mu-heading-2{font-family:var(--mu-font-display);font-size:24px;line-height:32px;font-weight:600;letter-spacing:-.01em}.mu-heading-1{font-family:var(--mu-font-display);font-size:32px;line-height:40px;font-weight:600;letter-spacing:-.01em}.mu-display{font-family:var(--mu-font-display);font-size:40px;line-height:48px;font-weight:600;letter-spacing:-.02em}.mu-prose{--prose-fs: 15px;--prose-lh: 24px;--prose-h1: 20px;--prose-h1-lh: 28px;--prose-h2: 17px;--prose-h2-lh: 24px;--prose-head: 12px;--prose-head-lh: 16px}.mu-prose-sm{--prose-fs: 14px;--prose-lh: 22px}}@layer mu{.mu-spinner{display:inline-block;flex:none;box-sizing:border-box;width:var(--icon);height:var(--icon);border:var(--icon-stroke) solid currentColor;border-top-color:transparent;border-radius:var(--mu-radius-full);animation:mu-spin var(--mu-duration-spin) linear infinite}@keyframes mu-spin{to{rotate:1turn}}}@layer mu{.mu-button{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--gap);box-sizing:border-box;height:var(--h);margin:0;padding:0 var(--px);border:0;border-radius:var(--r);color:var(--mu-ink);background-color:var(--mu-key);background-image:linear-gradient(180deg,var(--mu-key-sheen),transparent 60%);box-shadow:var(--mu-shadow-raised);white-space:nowrap;text-decoration:none;cursor:pointer;user-select:none;transition-property:background-color,box-shadow,color,translate;transition-duration:var(--mu-duration-press);transition-timing-function:var(--mu-ease-out)}.mu-button:has(>svg:first-child){padding-inline-start:var(--pxi)}.mu-button.mu-button-icon{width:var(--h);padding:0}.mu-button-label{min-width:0;overflow:hidden;text-overflow:ellipsis}@media(hover:hover){.mu-button:hover:not([data-disabled]){background-color:var(--mu-key-hover)}.mu-button-primary:hover:not([data-disabled]){background-color:var(--mu-primary-hover)}.mu-button-danger:hover:not([data-disabled]){background-color:var(--mu-danger-key);filter:brightness(1.08)}.mu-button-ghost:hover:not([data-disabled]){background-color:var(--mu-hover);color:var(--mu-ink)}}.mu-button:active:not([data-disabled]){translate:0 .5px;box-shadow:var(--mu-shadow-pressed)}.mu-button-primary{color:var(--mu-on-primary);background-color:var(--mu-primary)}.mu-button-danger{color:var(--mu-on-danger);background-color:var(--mu-danger-key)}.mu-button-ghost{color:var(--mu-ink-muted);background-color:transparent;background-image:none;box-shadow:none}.mu-button-ghost[data-popup-open]{background-color:var(--mu-hover);color:var(--mu-ink)}.mu-button-ghost:active:not([data-disabled]){translate:none;background-color:var(--mu-well);box-shadow:var(--mu-shadow-track)}.mu-button[data-disabled]:not([data-loading]){opacity:.45;cursor:not-allowed}.mu-button[data-loading]{cursor:progress}.mu-button[data-loading]>:not(.mu-spinner){opacity:0}.mu-button>.mu-spinner{position:absolute;inset:0;margin:auto}@media(prefers-reduced-motion:reduce){.mu-button:active:not([data-disabled]){translate:none}}}@layer mu{.mu-kbd{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:calc(var(--mu-control-sm) - 2 * var(--mu-inset));height:calc(var(--mu-control-sm) - 2 * var(--mu-inset));padding:0 var(--mu-space-1);border-radius:var(--mu-radius-sm);color:var(--mu-ink-muted);background-color:var(--mu-key);background-image:linear-gradient(180deg,var(--mu-key-sheen),transparent 60%);box-shadow:var(--mu-shadow-raised);white-space:nowrap}}@layer mu{.mu-separator{flex:none;align-self:stretch;margin:0;border:0;background-color:var(--mu-line)}.mu-separator[data-orientation=horizontal]{height:1px}.mu-separator[data-orientation=vertical]{width:1px}}@layer mu{.mu-badge{--icon: calc(var(--mu-icon-sm) - var(--mu-inset));display:inline-flex;align-items:center;gap:var(--mu-space-1);box-sizing:border-box;height:calc(var(--mu-control-sm) - 2 * var(--mu-inset));padding:0 calc(var(--mu-space-1) + var(--mu-inset));border-radius:var(--mu-radius-sm);white-space:nowrap;vertical-align:middle}.mu-badge-neutral{color:var(--mu-ink);background-color:var(--mu-well)}.mu-badge-outline{color:var(--mu-ink-muted);box-shadow:inset 0 0 0 1px var(--mu-edge)}.mu-badge-success{color:var(--mu-success);background-color:var(--mu-success-soft)}.mu-badge-warning{color:var(--mu-warning);background-color:var(--mu-warning-soft)}.mu-badge-danger{color:var(--mu-danger);background-color:var(--mu-danger-soft)}}@layer mu{.mu-avatar-root{display:inline-flex;flex:none;align-items:center;justify-content:center;overflow:hidden;box-sizing:border-box;width:var(--h);height:var(--h);border-radius:var(--mu-radius-full);color:var(--mu-ink-muted);background-color:var(--mu-well);vertical-align:middle;user-select:none}.mu-avatar-image{width:100%;height:100%;object-fit:cover}.mu-avatar-fallback{display:flex;align-items:center;justify-content:center;width:100%;height:100%}}@layer mu{.mu-link{color:var(--mu-accent);text-decoration:none;text-underline-offset:.2em;border-radius:var(--mu-radius-xs);cursor:pointer}.mu-link:hover,.mu-link:focus-visible,.mu-link-underline{text-decoration:underline}[data-theme=contrast] .mu-link{text-decoration:underline}.mu-link-muted{color:var(--mu-ink-muted)}.mu-link-muted:hover{color:var(--mu-ink)}.mu-link>.mu-icon{display:inline-block;width:.85em;height:.85em;margin-inline-start:.1em;vertical-align:-.05em}}@layer mu{.mu-skeleton{box-sizing:border-box;width:100%;height:var(--lh);border-radius:var(--mu-radius-sm);background-color:var(--mu-well);background-image:linear-gradient(90deg,transparent 0%,var(--mu-hover) 50%,transparent 100%);background-size:200% 100%;background-repeat:no-repeat;animation:mu-shimmer var(--mu-duration-shimmer) ease-in-out infinite}.mu-skeleton-round{width:var(--h);height:var(--h);border-radius:var(--mu-radius-full)}@keyframes mu-shimmer{0%{background-position:150% 0}to{background-position:-50% 0}}@media(prefers-reduced-motion:reduce){.mu-skeleton{animation:none;background-image:none}}}@layer mu{.mu-field-root{display:flex;flex-direction:column;gap:var(--mu-space-1);min-width:0}.mu-field-label{color:var(--mu-ink)}.mu-field-item{display:flex}.mu-field-label:has(>.mu-checkbox,>.mu-switch,>.mu-radio){display:inline-flex;align-items:center;gap:var(--mu-space-2);font-weight:400;cursor:pointer}.mu-field-label[data-disabled]{opacity:.45;cursor:not-allowed}.mu-field-description{margin:0;color:var(--mu-ink-muted)}.mu-field-root[data-invalid]>.mu-field-description{display:none}.mu-field-error{display:flex;align-items:flex-start;gap:var(--mu-space-1);color:var(--mu-danger)}.mu-field-error>.mu-icon{--icon: var(--mu-icon-sm);margin-block:calc((1lh - var(--mu-icon-sm)) / 2)}.mu-fieldset-root{display:flex;flex-direction:column;gap:var(--mu-space-3);min-width:0;margin:0;padding:0;border:0}.mu-fieldset-legend{margin-bottom:var(--mu-space-1);padding:0;color:var(--mu-ink)}}@layer mu{.mu-input-root{display:flex;align-items:center;gap:var(--gap);box-sizing:border-box;width:100%;min-width:0;height:var(--h);padding:0 var(--px);border-radius:var(--r);color:var(--mu-ink);background-color:var(--mu-surface);box-shadow:inset 0 0 0 1px var(--mu-edge),var(--mu-shadow-track);cursor:text;transition:box-shadow var(--mu-duration-fade) var(--mu-ease-out)}.mu-input-root:has(>.mu-input-prefix){padding-inline-start:var(--pxi)}.mu-input-root:has(>.mu-input-suffix){padding-inline-end:var(--pxi)}@media(hover:hover){.mu-input-root:hover:not(:has(>[data-disabled])){box-shadow:inset 0 0 0 1px var(--mu-ink-muted),var(--mu-shadow-track)}}.mu-input-root:has(>.mu-input:focus){outline:var(--mu-focus-width) solid var(--mu-focus);outline-offset:var(--mu-focus-width)}.mu-input-root:has(>[data-invalid]){box-shadow:inset 0 0 0 1px var(--mu-danger),var(--mu-shadow-track)}.mu-input-root:has(>[data-disabled]){opacity:.45;cursor:not-allowed}.mu-input{flex:1;min-width:0;height:100%;margin:0;padding:0;border:0;outline:none;color:inherit;background:none;font:inherit;font-weight:400}.mu-input::placeholder{color:var(--mu-ink-muted);opacity:1}.mu-input[data-disabled]{cursor:not-allowed}.mu-input-prefix,.mu-input-suffix{display:flex;flex:none;align-items:center;gap:var(--mu-space-1);color:var(--mu-ink-muted)}}@layer mu{.mu-textarea{display:block;box-sizing:border-box;width:100%;min-height:var(--h);margin:0;padding:calc((var(--h) - var(--lh)) / 2) var(--px);border:0;border-radius:var(--r);color:var(--mu-ink);background-color:var(--mu-surface);box-shadow:inset 0 0 0 1px var(--mu-edge),var(--mu-shadow-track);font-weight:400;resize:vertical;transition:box-shadow var(--mu-duration-fade) var(--mu-ease-out)}.mu-textarea::placeholder{color:var(--mu-ink-muted);opacity:1}@media(hover:hover){.mu-textarea:hover:not([data-disabled]){box-shadow:inset 0 0 0 1px var(--mu-ink-muted),var(--mu-shadow-track)}}.mu-textarea:focus{outline:var(--mu-focus-width) solid var(--mu-focus);outline-offset:var(--mu-focus-width)}.mu-textarea[data-invalid]{box-shadow:inset 0 0 0 1px var(--mu-danger),var(--mu-shadow-track)}.mu-textarea[data-disabled]{opacity:.45;cursor:not-allowed}}@layer mu{.mu-checkbox{display:inline-flex;flex:none;align-items:center;justify-content:center;box-sizing:border-box;width:var(--box);height:var(--box);border-radius:var(--mu-radius-sm);color:var(--mu-on-primary);background-color:var(--mu-well);box-shadow:inset 0 0 0 1px var(--mu-edge),var(--mu-shadow-track);cursor:pointer;transition-property:background-color,box-shadow,scale;transition-duration:var(--mu-duration-press);transition-timing-function:var(--mu-ease-out)}.mu-checkbox[data-checked],.mu-checkbox[data-indeterminate]{background-color:var(--mu-primary);box-shadow:none}.mu-checkbox[data-invalid]{box-shadow:inset 0 0 0 1px var(--mu-danger),var(--mu-shadow-track)}.mu-checkbox:active:not([data-disabled],[data-readonly]){scale:.94}.mu-checkbox[data-disabled]{opacity:.45;cursor:not-allowed}.mu-checkbox-indicator{display:flex;transition:opacity var(--mu-duration-fade) var(--mu-ease-out) var(--mu-duration-press),scale var(--mu-duration-fade) var(--mu-ease-out) var(--mu-duration-press)}.mu-checkbox-indicator[data-starting-style],.mu-checkbox-indicator[data-ending-style]{opacity:0;scale:.6}.mu-checkbox-indicator>svg{width:calc(var(--box) - 2 * var(--mu-inset));height:calc(var(--box) - 2 * var(--mu-inset));stroke-width:2}.mu-checkbox-indicator>svg *{vector-effect:non-scaling-stroke}@media(prefers-reduced-motion:reduce){.mu-checkbox:active:not([data-disabled],[data-readonly]){scale:none}.mu-checkbox-indicator[data-starting-style],.mu-checkbox-indicator[data-ending-style]{scale:none}}}@layer mu{.mu-switch{--switch-h: calc(var(--box) + var(--mu-inset));--switch-w: calc(var(--switch-h) * 1.7);--knob: calc(var(--switch-h) - 2 * var(--mu-inset));position:relative;display:inline-flex;flex:none;align-items:center;box-sizing:border-box;width:var(--switch-w);height:var(--switch-h);padding:var(--mu-inset);border-radius:var(--mu-radius-full);background-color:var(--mu-well);box-shadow:inset 0 0 0 1px var(--mu-edge),var(--mu-shadow-track);cursor:pointer;transition:background-color var(--mu-duration-settle) var(--mu-ease-settle),box-shadow var(--mu-duration-settle) var(--mu-ease-settle)}.mu-switch[data-checked]{background-color:var(--mu-primary);box-shadow:inset 0 0 0 1px var(--mu-primary)}.mu-switch[data-invalid]{box-shadow:inset 0 0 0 1px var(--mu-danger),var(--mu-shadow-track)}.mu-switch[data-disabled]{opacity:.45;cursor:not-allowed}.mu-switch-thumb{display:block;width:var(--knob);height:var(--knob);border-radius:var(--mu-radius-full);background-color:var(--mu-key);background-image:linear-gradient(180deg,var(--mu-key-sheen),transparent 60%);box-shadow:var(--mu-shadow-key);transition:translate var(--mu-duration-settle) var(--mu-ease-settle),scale var(--mu-duration-press) var(--mu-ease-out),background-color var(--mu-duration-settle) var(--mu-ease-settle)}.mu-switch-thumb[data-checked]{translate:calc(var(--switch-w) - var(--switch-h)) 0;background-color:var(--mu-on-primary)}.mu-switch:active:not([data-disabled],[data-readonly])>.mu-switch-thumb{scale:1.1}@media(prefers-reduced-motion:reduce){.mu-switch-thumb{transition-property:background-color}.mu-switch:active:not([data-disabled],[data-readonly])>.mu-switch-thumb{scale:none}}}@layer mu{.mu-radio-group{display:flex;flex-direction:column;align-items:flex-start;gap:var(--mu-space-3)}.mu-radio-group[data-orientation=horizontal]{flex-direction:row;flex-wrap:wrap;gap:var(--mu-space-3) var(--mu-space-4)}.mu-radio-group[data-orientation=horizontal]>.mu-fieldset-legend{flex-basis:100%}.mu-radio{display:inline-flex;flex:none;align-items:center;justify-content:center;box-sizing:border-box;width:var(--box);height:var(--box);border-radius:var(--mu-radius-full);background-color:var(--mu-well);box-shadow:inset 0 0 0 1px var(--mu-edge),var(--mu-shadow-track);cursor:pointer;transition-property:background-color,box-shadow,scale;transition-duration:var(--mu-duration-press);transition-timing-function:var(--mu-ease-out)}.mu-radio[data-checked]{background-color:var(--mu-primary);box-shadow:none}.mu-radio[data-invalid]{box-shadow:inset 0 0 0 1px var(--mu-danger),var(--mu-shadow-track)}.mu-radio:active:not([data-disabled],[data-readonly]){scale:.94}.mu-radio[data-disabled]{opacity:.45;cursor:not-allowed}.mu-radio-indicator{width:calc(var(--box) / 2.5);height:calc(var(--box) / 2.5);border-radius:var(--mu-radius-full);background-color:var(--mu-on-primary);transition:opacity var(--mu-duration-fade) var(--mu-ease-out) var(--mu-duration-press),scale var(--mu-duration-fade) var(--mu-ease-out) var(--mu-duration-press)}.mu-radio-indicator[data-starting-style],.mu-radio-indicator[data-ending-style]{opacity:0;scale:.4}@media(prefers-reduced-motion:reduce){.mu-radio:active:not([data-disabled],[data-readonly]){scale:none}.mu-radio-indicator[data-starting-style],.mu-radio-indicator[data-ending-style]{scale:none}}}@layer mu{.mu-toggle{position:relative;display:inline-flex;flex:none;align-items:center;justify-content:center;gap:var(--gap);box-sizing:border-box;height:var(--h);margin:0;padding:0 var(--px);border:0;border-radius:var(--r);color:var(--mu-ink-muted);background-color:transparent;white-space:nowrap;cursor:pointer;user-select:none;transition-property:background-color,box-shadow,color;transition-duration:var(--mu-duration-press);transition-timing-function:var(--mu-ease-out)}.mu-toggle:has(>svg:first-child){padding-inline-start:var(--pxi)}.mu-toggle.mu-toggle-icon{width:var(--h);padding:0}@media(hover:hover){.mu-toggle:hover:not([data-disabled]){color:var(--mu-ink);background-color:var(--mu-hover)}}.mu-toggle[data-pressed],.mu-toggle:active:not([data-disabled]){color:var(--mu-ink);background-color:var(--mu-well);box-shadow:inset 0 0 0 1px var(--mu-edge),var(--mu-shadow-track)}.mu-toggle[data-disabled]{opacity:.45;cursor:not-allowed}}@layer mu{.mu-segmented{position:relative;display:inline-flex;align-items:stretch;gap:0;box-sizing:border-box;height:var(--h);padding:var(--mu-inset);border-radius:var(--r);background-color:var(--mu-well);box-shadow:inset 0 0 0 1px var(--mu-edge),var(--mu-shadow-track)}.mu-segmented-key{position:absolute;top:var(--mu-inset);left:0;width:var(--key-width);height:calc(var(--h) - 2 * var(--mu-inset));translate:var(--key-left) 0;border-radius:calc(var(--r) - var(--mu-inset));background-color:var(--mu-key);background-image:linear-gradient(180deg,var(--mu-key-sheen),transparent 60%);box-shadow:var(--mu-shadow-key);transition:translate var(--mu-duration-settle) var(--mu-ease-settle),width var(--mu-duration-settle) var(--mu-ease-settle)}.mu-toggle-group.mu-segmented:not([data-keyed])>.mu-segmented-key{display:none}.mu-tabs-indicator{--key-left: var(--active-tab-left);--key-width: var(--active-tab-width)}.mu-segmented-item,.mu-segmented>.mu-toggle{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--gap);box-sizing:border-box;height:100%;margin:0;padding:0 calc(var(--px) - var(--mu-inset));border:0;border-radius:calc(var(--r) - var(--mu-inset));color:var(--mu-ink-muted);background:none;box-shadow:none;font:inherit;white-space:nowrap;cursor:pointer;user-select:none;transition:color var(--mu-duration-fade) var(--mu-ease-out)}.mu-segmented>.mu-toggle.mu-toggle-icon{width:calc(var(--h) - 2 * var(--mu-inset));padding:0}@media(hover:hover){.mu-segmented-item:hover:not([data-disabled]),.mu-segmented>.mu-toggle:hover:not([data-disabled]){color:var(--mu-ink);background:none}}.mu-segmented-item[data-active],.mu-segmented>.mu-toggle[data-pressed],.mu-segmented>.mu-toggle:active:not([data-disabled]){color:var(--mu-ink);background:none;box-shadow:none}.mu-segmented-item[data-disabled]{opacity:.45;cursor:not-allowed}.mu-tabs-root{display:flex;flex-direction:column;gap:var(--mu-space-4)}.mu-tabs-list{align-self:flex-start}.mu-tabs-panel{border-radius:var(--mu-radius-sm)}@media(prefers-reduced-motion:reduce){.mu-segmented-key{transition:none}}}@layer mu{.mu-toggle-group{display:inline-flex;align-items:center;gap:var(--mu-inset)}.mu-toggle-group>.mu-separator{align-self:center;height:calc(var(--h) - 2 * var(--mu-space-2));margin-inline:var(--mu-space-1)}}@layer mu{.mu-tooltip-popup{display:flex;align-items:center;gap:var(--mu-space-2);box-sizing:border-box;max-width:var(--mu-tooltip-width);padding:var(--mu-space-1) var(--mu-space-2);border-radius:var(--mu-radius-md);color:var(--mu-on-primary);background-color:var(--mu-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.mu-tooltip-shortcut{opacity:.65}}@layer mu{.mu-popover-popup{display:flex;flex-direction:column;gap:var(--mu-space-3);box-sizing:border-box;width:var(--mu-popover-width);max-width:var(--available-width);padding:var(--mu-space-4);outline:0}.mu-popover-title{margin:0;color:var(--mu-ink)}.mu-popover-description{margin:calc(-1 * var(--mu-space-2)) 0 0;color:var(--mu-ink-muted)}}@layer mu{.mu-menu-popup{box-sizing:border-box;min-width:var(--mu-menu-width);max-height:var(--available-height);overflow-y:auto;padding:var(--mu-space-1);outline:0}.mu-menu-item{display:flex;align-items:center;gap:var(--mu-space-2);box-sizing:border-box;height:var(--h);padding:0 var(--px);border-radius:calc(var(--mu-radius-xl) - var(--mu-space-1));color:var(--mu-ink);font-weight:400;white-space:nowrap;cursor:default;user-select:none;outline:0}.mu-menu-item:has(>svg:first-child){padding-inline-start:var(--pxi)}.mu-menu-item>svg{color:var(--mu-ink-muted)}.mu-menu-item[data-highlighted],.mu-menu-submenu-trigger[data-popup-open]{background-color:var(--mu-hover)}.mu-menu-item[data-disabled]{opacity:.45}.mu-menu-item-danger,.mu-menu-item-danger>svg{color:var(--mu-danger)}.mu-menu-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.mu-menu-shortcut{margin-inline-start:var(--mu-space-4);color:var(--mu-ink-muted)}.mu-menu-indicator{display:grid;flex:none;place-items:center;width:var(--icon);height:var(--icon);margin-inline-start:var(--mu-space-2)}.mu-menu-indicator>svg{color:var(--mu-ink)}.mu-menu-chevron{margin-inline-end:calc(var(--pxi) - var(--px));color:var(--mu-ink-muted)}.mu-menu-group-label{padding:var(--mu-space-2) var(--px) var(--mu-space-1);color:var(--mu-ink-muted)}.mu-menu-separator{height:1px;margin:var(--mu-space-1) calc(-1 * var(--mu-space-1));background-color:var(--mu-line)}}@layer mu{.mu-select-trigger{justify-content:space-between;min-width:0;padding-inline-end:var(--pxi);text-align:start}.mu-select-value{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mu-select-value[data-placeholder]{color:var(--mu-ink-muted);font-weight:400}.mu-select-icon{display:flex;flex:none;color:var(--mu-ink-muted)}.mu-select-trigger[data-invalid]{box-shadow:inset 0 0 0 1px var(--mu-danger),var(--mu-shadow-key)}.mu-select-positioner{outline:0}.mu-select-popup{box-sizing:border-box;min-width:max(var(--mu-menu-width),var(--anchor-width));max-height:var(--available-height);padding:var(--mu-space-1);outline:0}.mu-select-list{overflow-y:auto;max-height:var(--available-height);scroll-padding-block:var(--mu-space-1);outline:0}.mu-select-item{display:flex;align-items:center;gap:var(--mu-space-2);box-sizing:border-box;height:var(--h);padding:0 var(--px);border-radius:calc(var(--mu-radius-xl) - var(--mu-space-1));color:var(--mu-ink);font-weight:400;white-space:nowrap;cursor:default;user-select:none;outline:0}.mu-select-item:has(>svg:first-child){padding-inline-start:var(--pxi)}.mu-select-item>svg{color:var(--mu-ink-muted)}.mu-select-item[data-highlighted]{background-color:var(--mu-hover)}.mu-select-item[data-disabled]{opacity:.45}.mu-select-item-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.mu-select-indicator{display:grid;flex:none;place-items:center;width:var(--icon);height:var(--icon);margin-inline-start:var(--mu-space-2);color:var(--mu-ink)}.mu-select-group-label{padding:var(--mu-space-2) var(--px) var(--mu-space-1);color:var(--mu-ink-muted)}.mu-select-separator{height:1px;margin:var(--mu-space-1) calc(-1 * var(--mu-space-1));background-color:var(--mu-line)}.mu-select-scroll-arrow{display:grid;place-items:center;height:var(--mu-space-4);color:var(--mu-ink-muted)}}@layer mu{.mu-dialog-backdrop{position:fixed;inset:0;z-index:var(--mu-layer-overlay);background-color:var(--mu-overlay);transition:opacity var(--mu-duration-settle) var(--mu-ease-out)}.mu-dialog-backdrop[data-starting-style],.mu-dialog-backdrop[data-ending-style]{opacity:0}.mu-dialog-viewport{position:fixed;inset:0;z-index:var(--mu-layer-overlay);display:grid;place-items:safe center;box-sizing:border-box;padding:var(--mu-space-6) var(--mu-space-4);overflow-y:auto}.mu-dialog-popup{position:relative;display:flex;flex-direction:column;gap:var(--mu-space-4);box-sizing:border-box;width:var(--mu-dialog-width);max-width:100%;padding:var(--mu-space-5);border-radius:var(--mu-radius-2xl);outline:0;transition:opacity var(--mu-duration-settle) var(--mu-ease-out),translate var(--mu-duration-settle) var(--mu-ease-out)}.mu-dialog-popup[data-starting-style],.mu-dialog-popup[data-ending-style]{opacity:0;translate:0 var(--mu-space-1)}.mu-dialog-popup:has(>.mu-dialog-x)>.mu-dialog-title{padding-inline-end:var(--mu-space-6)}.mu-dialog-title{margin:0;color:var(--mu-ink)}.mu-dialog-description{margin:calc(-1 * var(--mu-space-2)) 0 0;color:var(--mu-ink-muted)}.mu-dialog-x{position:absolute;top:var(--mu-space-4);right:var(--mu-space-4)}.mu-dialog-footer{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--mu-space-2);margin-top:var(--mu-space-2)}@media(max-width:639.98px){.mu-dialog-sheet{place-items:end stretch;padding:var(--mu-space-6) 0 0}.mu-dialog-sheet>.mu-dialog-popup{width:100%;padding-bottom:max(var(--mu-space-5),env(safe-area-inset-bottom));border-end-start-radius:0;border-end-end-radius:0}.mu-dialog-sheet>.mu-dialog-popup[data-starting-style],.mu-dialog-sheet>.mu-dialog-popup[data-ending-style]{translate:0 var(--mu-space-6)}.mu-dialog-sheet .mu-dialog-footer{flex-direction:column-reverse}.mu-dialog-sheet .mu-dialog-footer>*{width:100%}}@media(prefers-reduced-motion:reduce){.mu-dialog-popup[data-starting-style],.mu-dialog-popup[data-ending-style],.mu-dialog-sheet>.mu-dialog-popup[data-starting-style],.mu-dialog-sheet>.mu-dialog-popup[data-ending-style]{translate:none}}}@layer mu{.mu-toast-viewport{position:fixed;right:var(--mu-space-6);bottom:var(--mu-space-6);z-index:var(--mu-layer-toast);width:var(--mu-toast-width);outline:0}@media(max-width:639.98px){.mu-toast-viewport{right:var(--mu-space-4);bottom:var(--mu-space-4);left:var(--mu-space-4);width:auto}}.mu-toast{--gap: var(--mu-space-3);--peek: var(--mu-space-2);--scale: max(0, 1 - var(--toast-index) * .05);--shrink: calc(1 - var(--scale));--height: var(--toast-frontmost-height, var(--toast-height));--offset-y: calc(var(--toast-offset-y) * -1 - var(--toast-index) * var(--gap) + var(--toast-swipe-movement-y));position:absolute;right:0;bottom:0;z-index:calc(var(--mu-layer-toast) - var(--toast-index));box-sizing:border-box;width:100%;height:var(--height);transform-origin:bottom center;translate:var(--toast-swipe-movement-x) calc(var(--toast-swipe-movement-y) - var(--toast-index) * var(--peek) - var(--shrink) * var(--height));scale:var(--scale);user-select:none;outline:0;transition:translate var(--mu-duration-settle) var(--mu-ease-settle),scale var(--mu-duration-settle) var(--mu-ease-settle),opacity var(--mu-duration-settle) var(--mu-ease-out),height var(--mu-duration-fade) var(--mu-ease-out)}.mu-toast[data-expanded]{height:var(--toast-height);translate:var(--toast-swipe-movement-x) var(--offset-y);scale:1}.mu-toast[data-starting-style],.mu-toast[data-ending-style]{translate:0 150%}.mu-toast[data-ending-style]{opacity:0}.mu-toast[data-ending-style][data-swipe-direction=up]{translate:0 calc(var(--toast-swipe-movement-y) - 150%)}.mu-toast[data-ending-style][data-swipe-direction=down]{translate:0 calc(var(--toast-swipe-movement-y) + 150%)}.mu-toast[data-ending-style][data-swipe-direction=left]{translate:calc(var(--toast-swipe-movement-x) - 150%) var(--offset-y)}.mu-toast[data-ending-style][data-swipe-direction=right]{translate:calc(var(--toast-swipe-movement-x) + 150%) var(--offset-y)}.mu-toast[data-limited]{opacity:0}.mu-toast:focus-visible{outline:var(--mu-focus-width) solid var(--mu-focus);outline-offset:var(--mu-focus-width)}.mu-toast:after{content:"";position:absolute;top:100%;left:0;width:100%;height:calc(var(--gap) + 1px)}.mu-toast-content{display:flex;align-items:flex-start;gap:var(--mu-space-3);box-sizing:border-box;height:100%;padding:var(--mu-space-3) var(--mu-space-3) var(--mu-space-3) var(--mu-space-4);overflow:hidden;transition:opacity var(--mu-duration-settle) var(--mu-ease-out)}.mu-toast-content[data-behind]{opacity:0}.mu-toast-content[data-expanded]{opacity:1}.mu-toast-icon{margin-block:calc((var(--h) - var(--icon)) / 2);color:var(--mu-ink-muted)}.mu-toast-success .mu-toast-icon{color:var(--mu-success)}.mu-toast-warning .mu-toast-icon{color:var(--mu-warning)}.mu-toast-danger .mu-toast-icon{color:var(--mu-danger)}.mu-toast-text{display:flex;flex:1;flex-direction:column;min-width:0;padding-block:calc((var(--h) - var(--lh)) / 2)}.mu-toast-title{margin:0;color:var(--mu-ink)}.mu-toast-description{margin:0;color:var(--mu-ink-muted)}.mu-toast-action,.mu-toast-close{margin-block:calc((var(--mu-control-md) - var(--mu-control-sm)) / 2)}@media(prefers-reduced-motion:reduce){.mu-toast{transition-property:opacity,height}.mu-toast[data-starting-style],.mu-toast[data-ending-style]{translate:var(--toast-swipe-movement-x) var(--offset-y)}}}@layer mu{.mu-input-root.mu-combobox-input-root{padding-inline-end:calc(var(--pxi) - var(--mu-space-1))}.mu-combobox-trigger{display:grid;place-items:center;width:calc(var(--icon) + var(--mu-space-2));height:calc(var(--icon) + var(--mu-space-2));margin:0;padding:0;border:0;border-radius:var(--mu-radius-sm);color:var(--mu-ink-muted);background:none;cursor:pointer}.mu-combobox-trigger:hover:not([data-disabled]){color:var(--mu-ink)}.mu-combobox-trigger[data-disabled]{cursor:not-allowed}.mu-combobox-popup{box-sizing:border-box;width:var(--anchor-width);min-width:var(--mu-menu-width);max-width:var(--available-width);outline:0}.mu-combobox-list{box-sizing:border-box;max-height:min(var(--mu-list-height),var(--available-height));overflow-y:auto;overscroll-behavior:contain;padding:var(--mu-space-1);scroll-padding-block:var(--mu-space-1);outline:0}.mu-combobox-list[data-empty]{padding:0}.mu-combobox-item{display:flex;align-items:center;gap:var(--mu-space-2);box-sizing:border-box;height:var(--h);padding:0 var(--px);border-radius:calc(var(--mu-radius-xl) - var(--mu-space-1));color:var(--mu-ink);font-weight:400;white-space:nowrap;cursor:default;user-select:none;outline:0}.mu-combobox-item:has(>svg:first-child){padding-inline-start:var(--pxi)}.mu-combobox-item>svg{color:var(--mu-ink-muted)}.mu-combobox-item[data-highlighted]{background-color:var(--mu-hover)}.mu-combobox-item[data-disabled]{opacity:.45}.mu-combobox-item-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.mu-combobox-indicator{display:grid;flex:none;place-items:center;width:var(--icon);height:var(--icon);margin-inline-start:var(--mu-space-2);color:var(--mu-ink)}.mu-combobox-empty:not(:empty){padding:var(--mu-space-3) var(--mu-space-4);color:var(--mu-ink-muted)}.mu-combobox-group-label{padding:var(--mu-space-2) var(--px) var(--mu-space-1);color:var(--mu-ink-muted)}.mu-combobox-separator{height:1px;margin:var(--mu-space-1) calc(-1 * var(--mu-space-1));background-color:var(--mu-line)}}@layer mu{.mu-button.mu-collapsible-trigger{margin-inline-start:calc(-1 * var(--px));padding-inline-end:var(--pxi)}.mu-collapsible-chevron{color:var(--mu-ink-muted);transition:rotate var(--mu-duration-settle) var(--mu-ease-settle)}.mu-collapsible-trigger[data-panel-open]>.mu-collapsible-chevron{rotate:180deg}.mu-collapsible-panel{transition:opacity var(--mu-duration-fade) var(--mu-ease-out),translate var(--mu-duration-fade) var(--mu-ease-out)}.mu-collapsible-panel[data-starting-style],.mu-collapsible-panel[data-ending-style]{opacity:0;translate:0 var(--mu-space-1)}@media(prefers-reduced-motion:reduce){.mu-collapsible-chevron{transition:none}.mu-collapsible-panel[data-starting-style],.mu-collapsible-panel[data-ending-style]{translate:none}}}@layer mu{.mu-table-scroll{overflow-x:auto;max-width:100%}.mu-table{width:100%;border-collapse:collapse;color:var(--mu-ink);font-variant-numeric:tabular-nums;text-align:start}.mu-table-head,.mu-table-cell{padding:0 var(--px);text-align:start;vertical-align:middle}.mu-table-head{height:var(--h);color:var(--mu-ink-muted);white-space:nowrap;border-bottom:1px solid var(--mu-line)}.mu-table-cell{padding-block:calc((var(--h) - var(--lh)) / 2 + var(--mu-space-1))}.mu-table-body>.mu-table-row+.mu-table-row>.mu-table-cell{border-top:1px solid var(--mu-line)}.mu-table-body>.mu-table-row:hover>.mu-table-cell{background-color:var(--mu-hover)}.mu-table-cell>.mu-button{margin-block:calc((var(--lh) - var(--h)) / 2);vertical-align:top}.mu-table-num{text-align:end}.mu-table-muted{color:var(--mu-ink-muted)}.mu-table-caption{caption-side:bottom;padding:var(--mu-space-2) var(--px) 0;color:var(--mu-ink-muted);text-align:start}}@layer mu{.mu-prose{color:var(--mu-ink);font-family:var(--mu-font-sans);font-size:var(--prose-fs);line-height:var(--prose-lh);font-weight:400;overflow-wrap:break-word;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.mu-prose ::selection{background:var(--mu-selection)}.mu-prose :where(p,ul,ol,pre,blockquote,table,figure,img,video,hr){margin:0 0 var(--mu-space-3)}.mu-prose :where(h1,h2,h3,h4,h5,h6){margin:var(--mu-space-5) 0 var(--mu-space-2);font-family:var(--mu-font-display);font-weight:600;letter-spacing:0}.mu-prose>:first-child{margin-top:0}.mu-prose>:last-child{margin-bottom:0}.mu-prose h1{font-size:var(--prose-h1);line-height:var(--prose-h1-lh)}.mu-prose h2{font-size:var(--prose-h2);line-height:var(--prose-h2-lh)}.mu-prose :where(h3,h4,h5,h6){font-size:var(--prose-fs);line-height:var(--prose-lh)}.mu-prose :where(strong,b){font-weight:600}.mu-prose del{color:var(--mu-ink-muted)}.mu-prose a{color:var(--mu-accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;border-radius:var(--mu-radius-xs)}.mu-prose a:focus-visible{outline:var(--mu-focus-width) solid var(--mu-focus);outline-offset:var(--mu-focus-width)}.mu-prose :where(ul,ol){padding-inline-start:var(--mu-space-6)}.mu-prose li+li{margin-top:var(--mu-space-1)}.mu-prose li>:where(ul,ol){margin:var(--mu-space-1) 0 0}.mu-prose li>p{margin:0}.mu-prose li::marker{color:var(--mu-ink-muted)}.mu-prose li:has(>input[type=checkbox]:first-child){position:relative;list-style:none}.mu-prose li>input[type=checkbox]:first-child{appearance:none;position:absolute;inset-inline-start:calc(-1 * (var(--mu-space-4) + var(--mu-space-2)));top:calc((var(--prose-lh) - var(--mu-space-4)) / 2);box-sizing:border-box;width:var(--mu-space-4);height:var(--mu-space-4);margin:0;border-radius:var(--mu-radius-sm);background-color:var(--mu-well);box-shadow:inset 0 0 0 1px var(--mu-edge),var(--mu-shadow-track);cursor:pointer}.mu-prose li>input[type=checkbox]:first-child:disabled{cursor:default}.mu-prose li>input[type=checkbox]:first-child:focus-visible{outline:var(--mu-focus-width) solid var(--mu-focus);outline-offset:var(--mu-focus-width)}.mu-prose li>input[type=checkbox]:first-child:checked{background-color:var(--mu-primary);box-shadow:none}.mu-prose li>input[type=checkbox]:first-child:checked:after{content:"";position:absolute;inset:var(--mu-inset);background-color:var(--mu-on-primary);mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat}.mu-prose li:has(>input[type=checkbox]:first-child:checked){color:var(--mu-ink-muted);text-decoration:line-through}.mu-prose :where(code,kbd,samp,pre){font-family:var(--mu-font-mono);font-size:.875em}.mu-prose :not(pre)>code{padding:.1em .3em;border-radius:var(--mu-radius-xs);background-color:var(--mu-well)}.mu-prose pre{overflow-x:auto;padding:var(--mu-space-3) var(--mu-space-4);border-radius:var(--mu-radius-md);background-color:var(--mu-well);line-height:1.6}.mu-prose pre>code{font-size:inherit}.mu-prose blockquote{margin-inline:0;padding-inline-start:var(--mu-space-4);border-inline-start:var(--mu-inset) solid var(--mu-edge);color:var(--mu-ink-muted)}.mu-prose hr{height:1px;margin-block:var(--mu-space-5);border:0;background-color:var(--mu-line)}.mu-prose :where(img,video){display:block;max-width:100%;height:auto;border-radius:var(--mu-radius-lg)}.mu-prose table{display:block;width:max-content;max-width:100%;overflow-x:auto;border-collapse:collapse;font-variant-numeric:tabular-nums}.mu-prose :where(th,td){padding:var(--mu-space-2) var(--mu-space-3);text-align:start;vertical-align:top}.mu-prose th{color:var(--mu-ink-muted);font-size:var(--prose-head);line-height:var(--prose-head-lh);font-weight:500;white-space:nowrap;border-bottom:1px solid var(--mu-line)}.mu-prose tr+tr>td{border-top:1px solid var(--mu-line)}.mu-prose-tag{padding:0 .25em;border-radius:var(--mu-radius-xs);color:var(--mu-ink-muted);background-color:var(--mu-well)}}
package/dist/tokens.css CHANGED
@@ -1 +1 @@
1
- @font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url("./InterVariable.woff2") format("woff2")}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url("./InterVariable-Italic.woff2") format("woff2")}:where(:root,:host,.mu-root:not([data-theme] *)),[data-theme=light]{color-scheme:light;--canvas: #f9f9f9;--surface: #ffffff;--well: #e4e4e4;--hover: #ededed;--key: #ffffff;--key-hover: #fbfbfb;--key-sheen: rgba(255,255,255,.18);--edge: #d0d0d0;--line: #e0e0e0;--overlay: rgba(0,0,0,.32);--ink: #1a1a1a;--ink-muted: #5e5e5e;--primary: #1f1f1f;--primary-hover: #333333;--on-primary: #ffffff;--accent: oklch(.5 .13 255);--selection: rgba(40,99,171,.18);--success: oklch(.52 .13 150);--success-soft: #e9f4ec;--warning: oklch(.5 .11 70);--warning-soft: #fbf1df;--danger: oklch(.53 .19 27);--danger-key: oklch(.53 .19 27);--danger-soft: #fbeaea;--on-danger: #ffffff;--focus: var(--accent);--shadow-track: inset 0 1px 2px rgba(0,0,0,.1);--shadow-key: 0 1px 2px rgba(0,0,0,.16), 0 2px 6px rgba(0,0,0,.08), inset 0 1px 0 rgba(255,255,255,.9), inset 0 -1px 0 rgba(0,0,0,.05);--shadow-raised: inset 0 1px 0 rgba(255,255,255,.25), inset 0 -1px 0 rgba(0,0,0,.1), 0 0 0 .5px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.12);--shadow-pressed: inset 0 1px 3px rgba(0,0,0,.22), 0 0 0 .5px rgba(0,0,0,.12);--shadow-pop: 0 8px 24px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.08), 0 0 0 .5px rgba(0,0,0,.08), inset 0 1px 0 rgba(255,255,255,.8)}[data-theme=dark]{--canvas: #0f0f0f;--surface: #1a1a1a;--well: #262626;--hover: #242424;--key: #343434;--key-hover: #3c3c3c;--key-sheen: rgba(255,255,255,.08);--edge: #353535;--line: #262626;--overlay: rgba(0,0,0,.6);--ink: #ededed;--ink-muted: #adadad;--primary: #e6e6e6;--primary-hover: #f5f5f5;--on-primary: #111111;--accent: oklch(.78 .11 255);--selection: rgba(135,186,253,.28);--success: oklch(.78 .14 150);--success-soft: #14261a;--warning: oklch(.8 .13 75);--warning-soft: #2a2112;--danger: oklch(.72 .16 25);--danger-key: oklch(.55 .17 25);--danger-soft: #2c1616;--on-danger: #ffffff;--focus: var(--accent);--shadow-track: inset 0 1px 2px rgba(0,0,0,.55), inset 0 -.5px 0 rgba(255,255,255,.06);--shadow-key: 0 1px 2px rgba(0,0,0,.6), 0 2px 6px rgba(0,0,0,.3), inset 0 1px 0 rgba(255,255,255,.1);--shadow-raised: inset 0 1px 0 rgba(255,255,255,.1), inset 0 -1px 0 rgba(0,0,0,.25), 0 0 0 .5px rgba(0,0,0,.6), 0 1px 2px rgba(0,0,0,.5);--shadow-pressed: inset 0 1px 3px rgba(0,0,0,.6), 0 0 0 .5px rgba(0,0,0,.6);--shadow-pop: 0 8px 24px rgba(0,0,0,.6), 0 0 0 1px rgba(255,255,255,.06), inset 0 1px 0 rgba(255,255,255,.06);color-scheme:dark}[data-theme=contrast]{color-scheme:light;--canvas: #ffffff;--surface: #ffffff;--well: #e6e6e6;--hover: #d9d9d9;--key: #ffffff;--key-hover: #f2f2f2;--key-sheen: #ffffff00;--edge: #6b6b6b;--line: #6b6b6b;--overlay: rgba(0,0,0,.6);--ink: #000000;--ink-muted: #333333;--primary: #000000;--primary-hover: #262626;--on-primary: #ffffff;--accent: oklch(.42 .14 255);--selection: rgba(0,75,151,.25);--success: oklch(.42 .12 150);--success-soft: #e9f4ec;--warning: oklch(.45 .11 70);--warning-soft: #fbf1df;--danger: oklch(.45 .18 27);--danger-key: oklch(.45 .18 27);--danger-soft: #fbeaea;--on-danger: #ffffff;--focus: var(--accent);--shadow-track: 0 0 0 0 rgba(0,0,0,0);--shadow-key: 0 0 0 1px #6b6b6b;--shadow-raised: 0 0 0 1px #000000;--shadow-pressed: inset 0 0 0 2px #000000;--shadow-pop: 0 0 0 1px #000000}:where(:root,:host,.mu-root){--space-0_5: 2px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-12: 48px;--space-16: 64px;--radius-xs: 2px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-2xl: 16px;--radius-full: 9999px;--control-sm: 24px;--control-md: 32px;--control-lg: 40px;--inset: 2px;--hit-area: 44px;--focus-width: 2px;--icon-sm: 14px;--icon-md: 16px;--icon-lg: 20px;--content-width: 720px;--sidebar-width: 240px;--menu-width: 200px;--list-height: 240px;--popover-width: 280px;--tooltip-width: 240px;--toast-width: 360px;--dialog-width: 440px;--breakpoint-sm: 640px;--breakpoint-md: 1024px;--layer-popup: 50;--layer-overlay: 50;--layer-toast: 60;--duration-press: 80ms;--duration-settle: .15s;--duration-fade: .1s;--duration-spin: .8s;--duration-shimmer: 1.4s;--ease-settle: cubic-bezier(.2, .9, .3, 1);--ease-out: cubic-bezier(.2, 0, 0, 1);--font-sans: Inter, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display: Inter, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace}
1
+ @layer mu{:where(:root,:host,.mu-root:not([data-theme] *)),[data-theme=light]{color-scheme:light;--mu-canvas: #f9f9f9;--mu-surface: #ffffff;--mu-well: #e4e4e4;--mu-hover: #ededed;--mu-key: #ffffff;--mu-key-hover: #fbfbfb;--mu-key-sheen: rgba(255,255,255,.18);--mu-edge: #d0d0d0;--mu-line: #e0e0e0;--mu-overlay: rgba(0,0,0,.32);--mu-ink: #1a1a1a;--mu-ink-muted: #5e5e5e;--mu-primary: #1f1f1f;--mu-primary-hover: #333333;--mu-on-primary: #ffffff;--mu-accent: oklch(.5 .13 255);--mu-selection: rgba(40,99,171,.18);--mu-success: oklch(.52 .13 150);--mu-success-soft: #e9f4ec;--mu-warning: oklch(.5 .11 70);--mu-warning-soft: #fbf1df;--mu-danger: oklch(.53 .19 27);--mu-danger-key: oklch(.53 .19 27);--mu-danger-soft: #fbeaea;--mu-on-danger: #ffffff;--mu-focus: var(--mu-accent);--mu-shadow-track: inset 0 1px 2px rgba(0,0,0,.1);--mu-shadow-key: 0 1px 2px rgba(0,0,0,.16), 0 2px 6px rgba(0,0,0,.08), inset 0 1px 0 rgba(255,255,255,.9), inset 0 -1px 0 rgba(0,0,0,.05);--mu-shadow-raised: inset 0 1px 0 rgba(255,255,255,.25), inset 0 -1px 0 rgba(0,0,0,.1), 0 0 0 .5px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.12);--mu-shadow-pressed: inset 0 1px 3px rgba(0,0,0,.22), 0 0 0 .5px rgba(0,0,0,.12);--mu-shadow-pop: 0 8px 24px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.08), 0 0 0 .5px rgba(0,0,0,.08), inset 0 1px 0 rgba(255,255,255,.8)}[data-theme=dark]{--mu-canvas: #0f0f0f;--mu-surface: #1a1a1a;--mu-well: #262626;--mu-hover: #242424;--mu-key: #343434;--mu-key-hover: #3c3c3c;--mu-key-sheen: rgba(255,255,255,.08);--mu-edge: #353535;--mu-line: #262626;--mu-overlay: rgba(0,0,0,.6);--mu-ink: #ededed;--mu-ink-muted: #adadad;--mu-primary: #e6e6e6;--mu-primary-hover: #f5f5f5;--mu-on-primary: #111111;--mu-accent: oklch(.78 .11 255);--mu-selection: rgba(135,186,253,.28);--mu-success: oklch(.78 .14 150);--mu-success-soft: #14261a;--mu-warning: oklch(.8 .13 75);--mu-warning-soft: #2a2112;--mu-danger: oklch(.72 .16 25);--mu-danger-key: oklch(.55 .17 25);--mu-danger-soft: #2c1616;--mu-on-danger: #ffffff;--mu-focus: var(--mu-accent);--mu-shadow-track: inset 0 1px 2px rgba(0,0,0,.55), inset 0 -.5px 0 rgba(255,255,255,.06);--mu-shadow-key: 0 1px 2px rgba(0,0,0,.6), 0 2px 6px rgba(0,0,0,.3), inset 0 1px 0 rgba(255,255,255,.1);--mu-shadow-raised: inset 0 1px 0 rgba(255,255,255,.1), inset 0 -1px 0 rgba(0,0,0,.25), 0 0 0 .5px rgba(0,0,0,.6), 0 1px 2px rgba(0,0,0,.5);--mu-shadow-pressed: inset 0 1px 3px rgba(0,0,0,.6), 0 0 0 .5px rgba(0,0,0,.6);--mu-shadow-pop: 0 8px 24px rgba(0,0,0,.6), 0 0 0 1px rgba(255,255,255,.06), inset 0 1px 0 rgba(255,255,255,.06);color-scheme:dark}[data-theme=contrast]{color-scheme:light;--mu-canvas: #ffffff;--mu-surface: #ffffff;--mu-well: #e6e6e6;--mu-hover: #d9d9d9;--mu-key: #ffffff;--mu-key-hover: #f2f2f2;--mu-key-sheen: #ffffff00;--mu-edge: #6b6b6b;--mu-line: #6b6b6b;--mu-overlay: rgba(0,0,0,.6);--mu-ink: #000000;--mu-ink-muted: #333333;--mu-primary: #000000;--mu-primary-hover: #262626;--mu-on-primary: #ffffff;--mu-accent: oklch(.42 .14 255);--mu-selection: rgba(0,75,151,.25);--mu-success: oklch(.42 .12 150);--mu-success-soft: #e9f4ec;--mu-warning: oklch(.45 .11 70);--mu-warning-soft: #fbf1df;--mu-danger: oklch(.45 .18 27);--mu-danger-key: oklch(.45 .18 27);--mu-danger-soft: #fbeaea;--mu-on-danger: #ffffff;--mu-focus: var(--mu-accent);--mu-shadow-track: 0 0 0 0 rgba(0,0,0,0);--mu-shadow-key: 0 0 0 1px #6b6b6b;--mu-shadow-raised: 0 0 0 1px #000000;--mu-shadow-pressed: inset 0 0 0 2px #000000;--mu-shadow-pop: 0 0 0 1px #000000}:where(:root,:host,.mu-root){--mu-space-0_5: 2px;--mu-space-1: 4px;--mu-space-2: 8px;--mu-space-3: 12px;--mu-space-4: 16px;--mu-space-5: 20px;--mu-space-6: 24px;--mu-space-8: 32px;--mu-space-12: 48px;--mu-space-16: 64px;--mu-radius-xs: 2px;--mu-radius-sm: 4px;--mu-radius-md: 6px;--mu-radius-lg: 8px;--mu-radius-xl: 12px;--mu-radius-2xl: 16px;--mu-radius-full: 9999px;--mu-control-sm: 24px;--mu-control-md: 32px;--mu-control-lg: 40px;--mu-inset: 2px;--mu-hit-area: 44px;--mu-focus-width: 2px;--mu-icon-sm: 14px;--mu-icon-md: 16px;--mu-icon-lg: 20px;--mu-content-width: 720px;--mu-sidebar-width: 240px;--mu-menu-width: 200px;--mu-list-height: 240px;--mu-popover-width: 280px;--mu-tooltip-width: 240px;--mu-toast-width: 360px;--mu-dialog-width: 440px;--mu-breakpoint-sm: 640px;--mu-breakpoint-md: 1024px;--mu-layer-popup: 50;--mu-layer-overlay: 50;--mu-layer-toast: 60;--mu-duration-press: 80ms;--mu-duration-settle: .15s;--mu-duration-fade: .1s;--mu-duration-spin: .8s;--mu-duration-shimmer: 1.4s;--mu-ease-settle: cubic-bezier(.2, .9, .3, 1);--mu-ease-out: cubic-bezier(.2, 0, 0, 1);--mu-font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mu-font-display: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mu-font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace}}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ 'use client';
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
package/llms-full.txt CHANGED
@@ -20,7 +20,7 @@ It is not a general-purpose UI library for outside developers. Components are ge
20
20
  | [Principles and voice](principles.md) | The taste in six rules, and how interface text is written |
21
21
  | [Color](color.md) | Color roles, every color token in Light, Dark and High contrast, and how themes are chosen |
22
22
  | [Depth](depth.md) | The tactile model: recessed, key, raised, popup and flat; shadow tokens |
23
- | [Typography](typography.md) | Inter, the type scale and text rules |
23
+ | [Typography](typography.md) | The system font, the type scale and text rules |
24
24
  | [Size, spacing and layout](layout.md) | Control sizes, the 4px scale, radius, layout widths, breakpoints and layers |
25
25
  | [Motion](motion.md) | Press, settle and fade timing, and reduced motion |
26
26
  | [States](states.md) | Hover, pressed, loading, disabled, invalid and focus |
@@ -38,7 +38,7 @@ It is not a general-purpose UI library for outside developers. Components are ge
38
38
  - **One quiet hue.** `accent` is a quiet blue used only for focus rings, links and text selection, never as a fill.
39
39
  - **Status colors only for status.** Green means success, amber means warning, red means danger or error. None of them is used for emphasis.
40
40
  - **Lucide icons** at a fixed screen-pixel stroke: 1.5px at md and lg, 1.25px at sm and in badges.
41
- - **Inter** for all text, shipped as a local variable font.
41
+ - **The system UI font** for all text. The package ships no font files.
42
42
  - **Dense, on a 4px grid.** Controls are 32px tall by default.
43
43
 
44
44
  <!-- docs/principles.md -->
@@ -100,7 +100,7 @@ Memos UI is ink on paper: pure-gray neutrals, `primary` ink for emphasis, one qu
100
100
  - Status colors appear only when there is a status. Red is for destructive actions and errors, never for emphasis.
101
101
  - `danger` is tuned for text. `danger-key` is the danger button's fill; it is darker in Dark so the button is not the loudest thing on screen.
102
102
  - Always pair a status color with a word or an icon.
103
- - Use tokens through their CSS variables (`var(--well)`). Never copy raw values into component or product code.
103
+ - Use tokens through their CSS variables. Every token is a custom property with the `--mu-` prefix: the `well` token is `var(--mu-well)`. The prefix keeps the tokens apart from an app's own variables and from Tailwind's. Never copy raw values into component or product code.
104
104
 
105
105
  ## Themes
106
106
 
@@ -116,6 +116,25 @@ Set `data-theme="light" | "dark" | "contrast"` on the root element, or on any `.
116
116
 
117
117
  The package does not read `prefers-color-scheme` itself. The app does, so that a saved preference wins over the system setting. Dark sets `color-scheme: dark`, so native scrollbars and form controls follow.
118
118
 
119
+ ### App themes
120
+
121
+ An app can offer more themes than the three the package ships, such as a warm Paper theme in memos. An app theme is a rule that sets the tokens under its own `data-theme` value:
122
+
123
+ ```css
124
+ [data-theme="paper"] {
125
+ color-scheme: light;
126
+ --mu-canvas: #f5ede4;
127
+ --mu-surface: #fbf6f0;
128
+ /* every other color token, and the five shadow tokens */
129
+ }
130
+ ```
131
+
132
+ - Set every color token in the table below and the five shadow tokens in [Depth](depth.md). A token the theme leaves out keeps its Light value, so a partial theme mixes two palettes.
133
+ - Keep the rules on this page: `primary` stays ink, not a brand hue; `accent` is only for focus, links and selection; status colors only for status.
134
+ - The app owns the theme's contrast. Check in the app's own tests that every text and background pair named in the Usage column below keeps 4.5:1 or more. The package's tests and screenshots cover only Light, Dark and High contrast.
135
+ - The tokens sit in the `mu` [cascade layer](building.md#cascade-layer), so an unlayered app theme wins over them at any specificity.
136
+ - An app theme is a choice the user makes. It is not a way to restyle the package per product: an app's default theme is Light or Dark.
137
+
119
138
  ## Color tokens
120
139
 
121
140
  | Token | Light | Dark | High contrast | Usage |
@@ -137,7 +156,7 @@ The package does not read `prefers-color-scheme` itself. The app does, so that a
137
156
  | `on-primary` | `#ffffff` | `#111111` | `#ffffff` | Text, icons and the switch knob on `primary` (16:1 Light, 15:1 Dark) |
138
157
  | `accent` | `oklch(0.5 0.13 255)` | `oklch(0.78 0.11 255)` | `oklch(0.42 0.14 255)` | The only hue at rest: focus rings, links, the text cursor and selection. 5.8:1 on canvas in Light. Never a fill |
139
158
  | `selection` | `rgba(40,99,171,0.18)` | `rgba(135,186,253,0.28)` | `rgba(0,75,151,0.25)` | Text selection and the selected range in an editor |
140
- | `focus` | `var(--accent)` | `var(--accent)` | `var(--accent)` | Focus ring: 2px outline, 2px offset, on `:focus-visible` only |
159
+ | `focus` | `var(--mu-accent)` | `var(--mu-accent)` | `var(--mu-accent)` | Focus ring: 2px outline, 2px offset, on `:focus-visible` only |
141
160
  | `success` | `oklch(0.52 0.13 150)` | `oklch(0.78 0.14 150)` | `oklch(0.42 0.12 150)` | Success text and icons on `surface` or `success-soft` (4.6:1 or more). Always with a word or icon |
142
161
  | `success-soft` | `#e9f4ec` | `#14261a` | `#e9f4ec` | Background of success badges and toasts |
143
162
  | `warning` | `oklch(0.5 0.11 70)` | `oklch(0.8 0.13 75)` | `oklch(0.45 0.11 70)` | Warning text and icons on `surface` or `warning-soft` (5.5:1 or more) |
@@ -168,10 +187,10 @@ The default taste is "Light, tactile": restrained depth where depth shows behavi
168
187
  Each depth class applies a whole role in one class. Use them for new parts before writing new shadows.
169
188
 
170
189
  ```css
171
- .mu-recessed { background-color: var(--well); box-shadow: inset 0 0 0 1px var(--edge), var(--shadow-track); }
172
- .mu-raised { background-color: var(--key); background-image: linear-gradient(180deg, var(--key-sheen), rgba(255,255,255,0) 60%); box-shadow: var(--shadow-raised); }
173
- .mu-key { background-color: var(--key); background-image: linear-gradient(180deg, var(--key-sheen), rgba(255,255,255,0) 60%); box-shadow: var(--shadow-key); }
174
- .mu-popup { background: var(--surface); box-shadow: var(--shadow-pop); border-radius: var(--radius-xl); }
190
+ .mu-recessed { background-color: var(--mu-well); box-shadow: inset 0 0 0 1px var(--mu-edge), var(--mu-shadow-track); }
191
+ .mu-raised { background-color: var(--mu-key); background-image: linear-gradient(180deg, var(--mu-key-sheen), rgba(255,255,255,0) 60%); box-shadow: var(--mu-shadow-raised); }
192
+ .mu-key { background-color: var(--mu-key); background-image: linear-gradient(180deg, var(--mu-key-sheen), rgba(255,255,255,0) 60%); box-shadow: var(--mu-shadow-key); }
193
+ .mu-popup { background: var(--mu-surface); box-shadow: var(--mu-shadow-pop); border-radius: var(--mu-radius-xl); }
175
194
  ```
176
195
 
177
196
  ## Rules
@@ -197,31 +216,31 @@ Each depth class applies a whole role in one class. Use them for new parts befor
197
216
  ### Light
198
217
 
199
218
  ```css
200
- --shadow-track: inset 0 1px 2px rgba(0,0,0,0.10);
201
- --shadow-key: 0 1px 2px rgba(0,0,0,0.16), 0 2px 6px rgba(0,0,0,0.08), inset 0 1px 0 rgba(255,255,255,0.9), inset 0 -1px 0 rgba(0,0,0,0.05);
202
- --shadow-raised: inset 0 1px 0 rgba(255,255,255,0.25), inset 0 -1px 0 rgba(0,0,0,0.10), 0 0 0 0.5px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.12);
203
- --shadow-pressed: inset 0 1px 3px rgba(0,0,0,0.22), 0 0 0 0.5px rgba(0,0,0,0.12);
204
- --shadow-pop: 0 8px 24px rgba(0,0,0,0.10), 0 1px 3px rgba(0,0,0,0.08), 0 0 0 0.5px rgba(0,0,0,0.08), inset 0 1px 0 rgba(255,255,255,0.8);
219
+ --mu-shadow-track: inset 0 1px 2px rgba(0,0,0,0.10);
220
+ --mu-shadow-key: 0 1px 2px rgba(0,0,0,0.16), 0 2px 6px rgba(0,0,0,0.08), inset 0 1px 0 rgba(255,255,255,0.9), inset 0 -1px 0 rgba(0,0,0,0.05);
221
+ --mu-shadow-raised: inset 0 1px 0 rgba(255,255,255,0.25), inset 0 -1px 0 rgba(0,0,0,0.10), 0 0 0 0.5px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.12);
222
+ --mu-shadow-pressed: inset 0 1px 3px rgba(0,0,0,0.22), 0 0 0 0.5px rgba(0,0,0,0.12);
223
+ --mu-shadow-pop: 0 8px 24px rgba(0,0,0,0.10), 0 1px 3px rgba(0,0,0,0.08), 0 0 0 0.5px rgba(0,0,0,0.08), inset 0 1px 0 rgba(255,255,255,0.8);
205
224
  ```
206
225
 
207
226
  ### Dark
208
227
 
209
228
  ```css
210
- --shadow-track: inset 0 1px 2px rgba(0,0,0,0.55), inset 0 -0.5px 0 rgba(255,255,255,0.06);
211
- --shadow-key: 0 1px 2px rgba(0,0,0,0.6), 0 2px 6px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.10);
212
- --shadow-raised: inset 0 1px 0 rgba(255,255,255,0.10), inset 0 -1px 0 rgba(0,0,0,0.25), 0 0 0 0.5px rgba(0,0,0,0.6), 0 1px 2px rgba(0,0,0,0.5);
213
- --shadow-pressed: inset 0 1px 3px rgba(0,0,0,0.6), 0 0 0 0.5px rgba(0,0,0,0.6);
214
- --shadow-pop: 0 8px 24px rgba(0,0,0,0.6), 0 0 0 1px rgba(255,255,255,0.06), inset 0 1px 0 rgba(255,255,255,0.06);
229
+ --mu-shadow-track: inset 0 1px 2px rgba(0,0,0,0.55), inset 0 -0.5px 0 rgba(255,255,255,0.06);
230
+ --mu-shadow-key: 0 1px 2px rgba(0,0,0,0.6), 0 2px 6px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.10);
231
+ --mu-shadow-raised: inset 0 1px 0 rgba(255,255,255,0.10), inset 0 -1px 0 rgba(0,0,0,0.25), 0 0 0 0.5px rgba(0,0,0,0.6), 0 1px 2px rgba(0,0,0,0.5);
232
+ --mu-shadow-pressed: inset 0 1px 3px rgba(0,0,0,0.6), 0 0 0 0.5px rgba(0,0,0,0.6);
233
+ --mu-shadow-pop: 0 8px 24px rgba(0,0,0,0.6), 0 0 0 1px rgba(255,255,255,0.06), inset 0 1px 0 rgba(255,255,255,0.06);
215
234
  ```
216
235
 
217
236
  ### High contrast
218
237
 
219
238
  ```css
220
- --shadow-track: 0 0 0 0 rgba(0,0,0,0);
221
- --shadow-key: 0 0 0 1px #6b6b6b;
222
- --shadow-raised: 0 0 0 1px #000000;
223
- --shadow-pressed: inset 0 0 0 2px #000000;
224
- --shadow-pop: 0 0 0 1px #000000;
239
+ --mu-shadow-track: 0 0 0 0 rgba(0,0,0,0);
240
+ --mu-shadow-key: 0 0 0 1px #6b6b6b;
241
+ --mu-shadow-raised: 0 0 0 1px #000000;
242
+ --mu-shadow-pressed: inset 0 0 0 2px #000000;
243
+ --mu-shadow-pop: 0 0 0 1px #000000;
225
244
  ```
226
245
 
227
246
  <!-- docs/typography.md -->
@@ -230,7 +249,7 @@ Each depth class applies a whole role in one class. Use them for new parts befor
230
249
 
231
250
  ## Rules
232
251
 
233
- - Inter for everything, smoothed with antialiasing. Below 20px use the text optical size. From 20px up use the display optical size.
252
+ - The platform's UI font for everything (San Francisco on Apple, Segoe UI on Windows, Roboto on Android), smoothed with antialiasing. The package ships no font files.
234
253
  - Controls and labels are weight 500. Running text is 400. Headings are 600.
235
254
  - Control text scales with the control size: 12px at sm, 14px at md, 16px at lg.
236
255
  - `body-sm` (13px) is for dense secondary text. `label-xs` (11px) is for kbd and counts inside badges only.
@@ -243,15 +262,15 @@ Each depth class applies a whole role in one class. Use them for new parts befor
243
262
 
244
263
  | Family | Stack |
245
264
  | --- | --- |
246
- | `--font-sans` | `Inter, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif` |
247
- | `--font-display` | `Inter, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif` |
248
- | `--font-mono` | `ui-monospace, "SF Mono", Menlo, Consolas, monospace` |
265
+ | `--mu-font-sans` | `system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif` |
266
+ | `--mu-font-display` | `system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif` |
267
+ | `--mu-font-mono` | `ui-monospace, "SF Mono", Menlo, Consolas, monospace` |
249
268
 
250
- The package ships Inter variable (upright and italic) as local `woff2` files, declared in `tokens.css`, and never loads a remote font. The fallback stack starts with `system-ui`. Code in [Prose](components/prose.md) uses the platform's monospace font; no mono font ships.
269
+ The package ships no font files and loads no remote font: text uses the system UI font, so it looks native on each platform and costs no download. An app that wants another font sets `--mu-font-sans` and `--mu-font-display` after loading `tokens.css`, and loads the font itself. Code in [Prose](components/prose.md) uses the platform's monospace font.
251
270
 
252
271
  ## Scale
253
272
 
254
- ### Text (`--font-sans`)
273
+ ### Text (`--mu-font-sans`)
255
274
 
256
275
  | Style | Size / line | Weight | Usage |
257
276
  | --- | --- | --- | --- |
@@ -264,17 +283,17 @@ The package ships Inter variable (upright and italic) as local `woff2` files, de
264
283
  | `body-lg` | 16 / 24px | 400 | Reading text on marketing pages and other long-form copy |
265
284
  | `label-lg` | 16 / 24px | 500 | Labels inside lg controls |
266
285
 
267
- ### Headings (`--font-display`)
286
+ ### Headings (`--mu-font-display`)
268
287
 
269
- | Style | Size / line | Weight | Letter spacing | Optical size | Usage |
270
- | --- | --- | --- | --- | --- | --- |
271
- | `title` | 18 / 28px | 600 | 0 | text | Section titles inside panels; dialog titles; empty-state titles |
272
- | `heading-3` | 20 / 28px | 600 | 0 | 20 | Page sub-heads |
273
- | `heading-2` | 24 / 32px | 600 | −0.01em | 24 | Page titles in an app |
274
- | `heading-1` | 32 / 40px | 600 | −0.01em | 32 | Marketing and onboarding headings |
275
- | `display` | 40 / 48px | 600 | −0.02em | 32 | Hero headline on a website only |
288
+ | Style | Size / line | Weight | Letter spacing | Usage |
289
+ | --- | --- | --- | --- | --- |
290
+ | `title` | 18 / 28px | 600 | 0 | Section titles inside panels; dialog titles; empty-state titles |
291
+ | `heading-3` | 20 / 28px | 600 | 0 | Page sub-heads |
292
+ | `heading-2` | 24 / 32px | 600 | −0.01em | Page titles in an app |
293
+ | `heading-1` | 32 / 40px | 600 | −0.01em | Marketing and onboarding headings |
294
+ | `display` | 40 / 48px | 600 | −0.02em | Hero headline on a website only |
276
295
 
277
- Each style is also a class with the `mu-` prefix (`.mu-caption`, `.mu-heading-2`) in `@usememos/ui/styles.css`, which sets the family, size, line height, weight and, where listed, letter spacing and `font-variation-settings: 'opsz' <n>`.
296
+ Each style is also a class with the `mu-` prefix (`.mu-caption`, `.mu-heading-2`) in `@usememos/ui/styles.css`, which sets the family, size, line height, weight and, where listed, letter spacing.
278
297
 
279
298
  ## Prose
280
299
 
@@ -1959,7 +1978,7 @@ Every native attribute passes through.
1959
1978
  - Text: 15px on a 24px line (`sm`: 14 on 22), weight 400, `ink`. Blocks are `space-3` apart.
1960
1979
  - Headings: `h1` 20/28px, `h2` 17/24px, `h3`–`h6` the text size; all weight 600, with `space-5` above and `space-2` below.
1961
1980
  - Links: `accent`, underlined at rest, because color alone does not set them apart from the text.
1962
- - Code: `--font-mono` at 0.875em on `well`. Inline code has `radius-xs`; blocks have `radius-md`, `space-3` by `space-4` padding, and scroll sideways.
1981
+ - Code: `--mu-font-mono` at 0.875em on `well`. Inline code has `radius-xs`; blocks have `radius-md`, `space-3` by `space-4` padding, and scroll sideways.
1963
1982
  - Quotes: a 2px `edge` bar, text in `ink-muted`. Rules: a 1px `line` with `space-5` around it.
1964
1983
  - Lists indent `space-6`; markers are `ink-muted`. Task checkboxes are 16px, drawn like [Checkbox](checkbox.md); done items go `ink-muted` with a strike-through.
1965
1984
  - Images and video: never wider than the column, `radius-lg`.
@@ -2041,9 +2060,9 @@ How the package is put together and how products use it.
2041
2060
  - **React components on [Base UI](https://base-ui.com).** Base UI provides behavior: focus management, keyboard support, ARIA, portals and positioning. Memos UI provides the styling, the tokens and the component API.
2042
2061
  - **No shadcn.** Don't depend on shadcn, don't copy its code, and don't use shadcn-compatible names for components or tokens. Following a similar layering (unstyled behavior below, styled components above) is fine.
2043
2062
  - **One npm package**, `@usememos/ui`, used by every product. ESM only, React 18 and 19, one JS entry point and two stylesheets.
2044
- - **Plain CSS on tokens.** Components are styled with CSS that reads token variables. Product code uses tokens through their CSS variables (`var(--well)`) and never copies raw values.
2063
+ - **Plain CSS on tokens.** Components are styled with CSS that reads token variables. Product code uses tokens through their CSS variables (`var(--mu-well)`) and never copies raw values.
2045
2064
  - **Lucide icons** from `lucide-react`. See [Icons](icons.md).
2046
- - **Inter variable** shipped as a local `woff2`. No remote fonts.
2065
+ - **No fonts.** Text uses the system UI font; nothing is downloaded.
2047
2066
 
2048
2067
  ## Loading the CSS
2049
2068
 
@@ -2054,7 +2073,24 @@ import "@usememos/ui/tokens.css";
2054
2073
  import "@usememos/ui/styles.css";
2055
2074
  ```
2056
2075
 
2057
- `tokens.css` defines every token on `:root`, on a shadow root's `:host`, and on any element with the `mu-root` class, and declares the Inter font faces. The font files ship next to it. `styles.css` holds the foundation classes and every component's styles.
2076
+ `tokens.css` defines every token on `:root`, on a shadow root's `:host`, and on any element with the `mu-root` class. `styles.css` holds the foundation classes and every component's styles.
2077
+
2078
+ Every token is a custom property named `--mu-<token>`, so the `surface` token is `var(--mu-surface)`. The prefix keeps the tokens apart from an app's own variables and from those of a CSS framework.
2079
+
2080
+ ### Cascade layer
2081
+
2082
+ Both stylesheets sit in one [cascade layer](https://developer.mozilla.org/en-US/docs/Web/CSS/@layer) named `mu`. Unlayered CSS always wins over layered CSS, so an app's own rules override a component without a specificity fight: a `className` on a `Button` that sets `width` wins over the button's own rule.
2083
+
2084
+ When the app also puts its CSS in layers, declare the order once, before any import, so that `mu` comes after resets and before the app's components and utilities. For an app on Tailwind CSS v4:
2085
+
2086
+ ```css
2087
+ @layer theme, base, mu, components, utilities;
2088
+ @import "tailwindcss";
2089
+ @import "@usememos/ui/tokens.css";
2090
+ @import "@usememos/ui/styles.css";
2091
+ ```
2092
+
2093
+ Without that line, the layer seen first is the weakest. A reset loaded after `styles.css` would then override the components.
2058
2094
 
2059
2095
  ## Scoping inside a host page
2060
2096
 
@@ -2062,7 +2098,7 @@ Inside another page (the web clipper, an embed), mount the UI under a `.mu-root`
2062
2098
 
2063
2099
  ## Choosing a theme
2064
2100
 
2065
- Set `data-theme="light" | "dark" | "contrast"` on the root element or on any `.mu-root`. Without the attribute the tokens are Light. The app, not the package, reads `prefers-color-scheme` and the user's saved choice. See [Color](color.md#themes).
2101
+ Set `data-theme="light" | "dark" | "contrast"` on the root element or on any `.mu-root`. Without the attribute the tokens are Light. The app, not the package, reads `prefers-color-scheme` and the user's saved choice. See [Color](color.md#themes). An app can add its own themes on top of these three; see [App themes](color.md#app-themes).
2066
2102
 
2067
2103
  ## Class names
2068
2104
 
package/llms.txt CHANGED
@@ -9,7 +9,7 @@ React components on Base UI, CSS tokens and foundation styles. Load `@usememos/u
9
9
  - [Principles and voice](https://github.com/usememos/ui/blob/main/docs/principles.md): The taste in six rules, and how interface text is written
10
10
  - [Color](https://github.com/usememos/ui/blob/main/docs/color.md): Color roles, every color token in Light, Dark and High contrast, and how themes are chosen
11
11
  - [Depth](https://github.com/usememos/ui/blob/main/docs/depth.md): The tactile model: recessed, key, raised, popup and flat; shadow tokens
12
- - [Typography](https://github.com/usememos/ui/blob/main/docs/typography.md): Inter, the type scale and text rules
12
+ - [Typography](https://github.com/usememos/ui/blob/main/docs/typography.md): The system font, the type scale and text rules
13
13
  - [Size, spacing and layout](https://github.com/usememos/ui/blob/main/docs/layout.md): Control sizes, the 4px scale, radius, layout widths, breakpoints and layers
14
14
  - [Motion](https://github.com/usememos/ui/blob/main/docs/motion.md): Press, settle and fade timing, and reduced motion
15
15
  - [States](https://github.com/usememos/ui/blob/main/docs/states.md): Hover, pressed, loading, disabled, invalid and focus
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usememos/ui",
3
- "version": "26.10.1",
3
+ "version": "26.10.3",
4
4
  "description": "The Memos UI design system: tokens, foundation styles and React components for usememos products.",
5
5
  "keywords": [
6
6
  "react",
Binary file
Binary file
package/dist/OFL.txt DELETED
@@ -1,92 +0,0 @@
1
- Copyright (c) 2016-2018 The Inter Project Authors (me@rsms.me)
2
-
3
- This Font Software is licensed under the SIL Open Font License, Version 1.1.
4
- This license is copied below, and is also available with a FAQ at:
5
- http://scripts.sil.org/OFL
6
-
7
- -----------------------------------------------------------
8
- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
9
- -----------------------------------------------------------
10
-
11
- PREAMBLE
12
- The goals of the Open Font License (OFL) are to stimulate worldwide
13
- development of collaborative font projects, to support the font creation
14
- efforts of academic and linguistic communities, and to provide a free and
15
- open framework in which fonts may be shared and improved in partnership
16
- with others.
17
-
18
- The OFL allows the licensed fonts to be used, studied, modified and
19
- redistributed freely as long as they are not sold by themselves. The
20
- fonts, including any derivative works, can be bundled, embedded,
21
- redistributed and/or sold with any software provided that any reserved
22
- names are not used by derivative works. The fonts and derivatives,
23
- however, cannot be released under any other type of license. The
24
- requirement for fonts to remain under this license does not apply
25
- to any document created using the fonts or their derivatives.
26
-
27
- DEFINITIONS
28
- "Font Software" refers to the set of files released by the Copyright
29
- Holder(s) under this license and clearly marked as such. This may
30
- include source files, build scripts and documentation.
31
-
32
- "Reserved Font Name" refers to any names specified as such after the
33
- copyright statement(s).
34
-
35
- "Original Version" refers to the collection of Font Software components as
36
- distributed by the Copyright Holder(s).
37
-
38
- "Modified Version" refers to any derivative made by adding to, deleting,
39
- or substituting -- in part or in whole -- any of the components of the
40
- Original Version, by changing formats or by porting the Font Software to a
41
- new environment.
42
-
43
- "Author" refers to any designer, engineer, programmer, technical
44
- writer or other person who contributed to the Font Software.
45
-
46
- PERMISSION AND CONDITIONS
47
- Permission is hereby granted, free of charge, to any person obtaining
48
- a copy of the Font Software, to use, study, copy, merge, embed, modify,
49
- redistribute, and sell modified and unmodified copies of the Font
50
- Software, subject to the following conditions:
51
-
52
- 1) Neither the Font Software nor any of its individual components,
53
- in Original or Modified Versions, may be sold by itself.
54
-
55
- 2) Original or Modified Versions of the Font Software may be bundled,
56
- redistributed and/or sold with any software, provided that each copy
57
- contains the above copyright notice and this license. These can be
58
- included either as stand-alone text files, human-readable headers or
59
- in the appropriate machine-readable metadata fields within text or
60
- binary files as long as those fields can be easily viewed by the user.
61
-
62
- 3) No Modified Version of the Font Software may use the Reserved Font
63
- Name(s) unless explicit written permission is granted by the corresponding
64
- Copyright Holder. This restriction only applies to the primary font name as
65
- presented to the users.
66
-
67
- 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
68
- Software shall not be used to promote, endorse or advertise any
69
- Modified Version, except to acknowledge the contribution(s) of the
70
- Copyright Holder(s) and the Author(s) or with their explicit written
71
- permission.
72
-
73
- 5) The Font Software, modified or unmodified, in part or in whole,
74
- must be distributed entirely under this license, and must not be
75
- distributed under any other license. The requirement for fonts to
76
- remain under this license does not apply to any document created
77
- using the Font Software.
78
-
79
- TERMINATION
80
- This license becomes null and void if any of the above conditions are
81
- not met.
82
-
83
- DISCLAIMER
84
- THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
85
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
86
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
87
- OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
88
- COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
89
- INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
90
- DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
91
- FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
92
- OTHER DEALINGS IN THE FONT SOFTWARE.