@teseor/css 1.2.0 → 1.2.1

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 (217) hide show
  1. package/dist/compiled.css +2013 -2017
  2. package/dist/index.css +2013 -2017
  3. package/package.json +1 -1
  4. package/src/00-config/tokens/shadows/index.scss +3 -3
  5. package/src/04-components/{button → actions/button}/button.visual.spec.ts +1 -1
  6. package/src/04-components/{button → actions/button}/index.scss +1 -1
  7. package/src/04-components/{button-group → actions/button-group}/button-group.visual.spec.ts +1 -1
  8. package/src/04-components/{button-group → actions/button-group}/index.scss +1 -1
  9. package/src/04-components/{avatar → data-display/avatar}/avatar.visual.spec.ts +1 -1
  10. package/src/04-components/{avatar → data-display/avatar}/index.scss +1 -1
  11. package/src/04-components/{badge → data-display/badge}/badge.visual.spec.ts +1 -1
  12. package/src/04-components/{badge → data-display/badge}/index.scss +1 -1
  13. package/src/04-components/{card → data-display/card}/card.visual.spec.ts +1 -1
  14. package/src/04-components/{card → data-display/card}/index.scss +1 -1
  15. package/src/04-components/{data-list → data-display/data-list}/data-list.visual.spec.ts +1 -1
  16. package/src/04-components/{data-list → data-display/data-list}/index.scss +1 -1
  17. package/src/04-components/{icon → data-display/icon}/icon.visual.spec.ts +1 -1
  18. package/src/04-components/{icon → data-display/icon}/index.scss +1 -1
  19. package/src/04-components/{status → data-display/status}/index.scss +1 -1
  20. package/src/04-components/{status → data-display/status}/status.visual.spec.ts +1 -1
  21. package/src/04-components/{table → data-display/table}/index.scss +1 -1
  22. package/src/04-components/{table → data-display/table}/table.visual.spec.ts +1 -1
  23. package/src/04-components/{tag → data-display/tag}/index.scss +1 -1
  24. package/src/04-components/{tag → data-display/tag}/tag.visual.spec.ts +1 -1
  25. package/src/04-components/{accordion → disclosure/accordion}/accordion.visual.spec.ts +1 -1
  26. package/src/04-components/{accordion → disclosure/accordion}/index.scss +1 -1
  27. package/src/04-components/disclosure/{disclosure.visual.spec.ts → disclosure/disclosure.visual.spec.ts} +1 -1
  28. package/src/04-components/disclosure/{index.scss → disclosure/index.scss} +1 -1
  29. package/src/04-components/{alert → feedback/alert}/alert.visual.spec.ts +1 -1
  30. package/src/04-components/{alert → feedback/alert}/index.scss +1 -1
  31. package/src/04-components/{progress → feedback/progress}/index.scss +1 -1
  32. package/src/04-components/{progress → feedback/progress}/progress.visual.spec.ts +1 -1
  33. package/src/04-components/{skeleton → feedback/skeleton}/index.scss +1 -1
  34. package/src/04-components/{skeleton → feedback/skeleton}/skeleton.visual.spec.ts +1 -1
  35. package/src/04-components/{spinner → feedback/spinner}/index.scss +1 -1
  36. package/src/04-components/{spinner → feedback/spinner}/spinner.visual.spec.ts +1 -1
  37. package/src/04-components/{toast → feedback/toast}/index.scss +1 -1
  38. package/src/04-components/{toast → feedback/toast}/toast.visual.spec.ts +1 -1
  39. package/src/04-components/{checkbox → forms/checkbox}/checkbox.visual.spec.ts +1 -1
  40. package/src/04-components/{checkbox → forms/checkbox}/index.scss +1 -1
  41. package/src/04-components/{field → forms/field}/field.visual.spec.ts +1 -1
  42. package/src/04-components/{field → forms/field}/index.scss +1 -1
  43. package/src/04-components/{form-error → forms/form-error}/form-error.visual.spec.ts +1 -1
  44. package/src/04-components/{form-error → forms/form-error}/index.scss +1 -1
  45. package/src/04-components/{form-helper → forms/form-helper}/form-helper.visual.spec.ts +1 -1
  46. package/src/04-components/{form-helper → forms/form-helper}/index.scss +1 -1
  47. package/src/04-components/{input → forms/input}/index.scss +1 -1
  48. package/src/04-components/{input → forms/input}/input.visual.spec.ts +1 -1
  49. package/src/04-components/{label → forms/label}/index.scss +1 -1
  50. package/src/04-components/{label → forms/label}/label.visual.spec.ts +1 -1
  51. package/src/04-components/{radio → forms/radio}/index.scss +1 -1
  52. package/src/04-components/{radio → forms/radio}/radio.visual.spec.ts +1 -1
  53. package/src/04-components/{select → forms/select}/index.scss +1 -1
  54. package/src/04-components/{select → forms/select}/select.visual.spec.ts +1 -1
  55. package/src/04-components/{textarea → forms/textarea}/index.scss +1 -1
  56. package/src/04-components/{textarea → forms/textarea}/textarea.visual.spec.ts +1 -1
  57. package/src/04-components/{toggle → forms/toggle}/index.scss +1 -1
  58. package/src/04-components/{toggle → forms/toggle}/toggle.visual.spec.ts +1 -1
  59. package/src/04-components/index.scss +42 -42
  60. package/src/04-components/{divider → layout/divider}/divider.visual.spec.ts +1 -1
  61. package/src/04-components/{divider → layout/divider}/index.scss +1 -1
  62. package/src/04-components/{breadcrumb → navigation/breadcrumb}/breadcrumb.visual.spec.ts +1 -1
  63. package/src/04-components/{breadcrumb → navigation/breadcrumb}/index.scss +1 -1
  64. package/src/04-components/{menu → navigation/menu}/index.scss +1 -1
  65. package/src/04-components/{menu → navigation/menu}/menu.visual.spec.ts +1 -1
  66. package/src/04-components/{nav → navigation/nav}/index.scss +1 -1
  67. package/src/04-components/{nav → navigation/nav}/nav.visual.spec.ts +1 -1
  68. package/src/04-components/{pagination → navigation/pagination}/index.scss +1 -1
  69. package/src/04-components/{pagination → navigation/pagination}/pagination.visual.spec.ts +1 -1
  70. package/src/04-components/{tabs → navigation/tabs}/index.scss +1 -1
  71. package/src/04-components/{tabs → navigation/tabs}/tabs.visual.spec.ts +1 -1
  72. package/src/04-components/{dialog → overlays/dialog}/dialog.visual.spec.ts +1 -1
  73. package/src/04-components/{dialog → overlays/dialog}/index.scss +1 -1
  74. package/src/04-components/{drawer → overlays/drawer}/drawer.visual.spec.ts +1 -1
  75. package/src/04-components/{drawer → overlays/drawer}/index.scss +1 -1
  76. package/src/04-components/{modal → overlays/modal}/index.scss +1 -1
  77. package/src/04-components/{modal → overlays/modal}/modal.visual.spec.ts +1 -1
  78. package/src/04-components/{overlay → overlays/overlay}/index.scss +1 -1
  79. package/src/04-components/{overlay → overlays/overlay}/overlay.visual.spec.ts +1 -1
  80. package/src/04-components/{popover → overlays/popover}/index.scss +1 -1
  81. package/src/04-components/{popover → overlays/popover}/popover.visual.spec.ts +1 -1
  82. package/src/04-components/{tooltip → overlays/tooltip}/index.scss +1 -1
  83. package/src/04-components/{tooltip → overlays/tooltip}/tooltip.visual.spec.ts +1 -1
  84. package/src/04-components/{code → typography/code}/code.visual.spec.ts +1 -1
  85. package/src/04-components/{code → typography/code}/index.scss +1 -1
  86. package/src/04-components/{heading → typography/heading}/heading.visual.spec.ts +1 -1
  87. package/src/04-components/{heading → typography/heading}/index.scss +1 -1
  88. package/src/04-components/{link → typography/link}/index.scss +1 -1
  89. package/src/04-components/{link → typography/link}/link.visual.spec.ts +1 -1
  90. package/src/99-debug/grid-overlay.scss +9 -8
  91. package/src/testing/sidebar-toggles.spec.ts +103 -0
  92. /package/src/04-components/{button → actions/button}/button-visual.png +0 -0
  93. /package/src/04-components/{button → actions/button}/button.api.json +0 -0
  94. /package/src/04-components/{button → actions/button}/button.docs.json +0 -0
  95. /package/src/04-components/{button-group → actions/button-group}/button-group-visual.png +0 -0
  96. /package/src/04-components/{button-group → actions/button-group}/button-group.api.json +0 -0
  97. /package/src/04-components/{button-group → actions/button-group}/button-group.docs.json +0 -0
  98. /package/src/04-components/{avatar → data-display/avatar}/avatar-visual.png +0 -0
  99. /package/src/04-components/{avatar → data-display/avatar}/avatar.api.json +0 -0
  100. /package/src/04-components/{avatar → data-display/avatar}/avatar.docs.json +0 -0
  101. /package/src/04-components/{badge → data-display/badge}/badge-visual.png +0 -0
  102. /package/src/04-components/{badge → data-display/badge}/badge.api.json +0 -0
  103. /package/src/04-components/{badge → data-display/badge}/badge.docs.json +0 -0
  104. /package/src/04-components/{card → data-display/card}/card-visual.png +0 -0
  105. /package/src/04-components/{card → data-display/card}/card.api.json +0 -0
  106. /package/src/04-components/{card → data-display/card}/card.docs.json +0 -0
  107. /package/src/04-components/{data-list → data-display/data-list}/data-list-visual.png +0 -0
  108. /package/src/04-components/{data-list → data-display/data-list}/data-list.api.json +0 -0
  109. /package/src/04-components/{data-list → data-display/data-list}/data-list.docs.json +0 -0
  110. /package/src/04-components/{icon → data-display/icon}/icon-visual.png +0 -0
  111. /package/src/04-components/{icon → data-display/icon}/icon.api.json +0 -0
  112. /package/src/04-components/{icon → data-display/icon}/icon.docs.json +0 -0
  113. /package/src/04-components/{status → data-display/status}/status-visual.png +0 -0
  114. /package/src/04-components/{status → data-display/status}/status.api.json +0 -0
  115. /package/src/04-components/{status → data-display/status}/status.docs.json +0 -0
  116. /package/src/04-components/{table → data-display/table}/table-visual.png +0 -0
  117. /package/src/04-components/{table → data-display/table}/table.api.json +0 -0
  118. /package/src/04-components/{table → data-display/table}/table.docs.json +0 -0
  119. /package/src/04-components/{tag → data-display/tag}/tag-visual.png +0 -0
  120. /package/src/04-components/{tag → data-display/tag}/tag.api.json +0 -0
  121. /package/src/04-components/{tag → data-display/tag}/tag.docs.json +0 -0
  122. /package/src/04-components/{accordion → disclosure/accordion}/accordion-visual.png +0 -0
  123. /package/src/04-components/{accordion → disclosure/accordion}/accordion.api.json +0 -0
  124. /package/src/04-components/{accordion → disclosure/accordion}/accordion.docs.json +0 -0
  125. /package/src/04-components/disclosure/{disclosure-visual.png → disclosure/disclosure-visual.png} +0 -0
  126. /package/src/04-components/disclosure/{disclosure.api.json → disclosure/disclosure.api.json} +0 -0
  127. /package/src/04-components/disclosure/{disclosure.docs.json → disclosure/disclosure.docs.json} +0 -0
  128. /package/src/04-components/{alert → feedback/alert}/alert-visual.png +0 -0
  129. /package/src/04-components/{alert → feedback/alert}/alert.api.json +0 -0
  130. /package/src/04-components/{alert → feedback/alert}/alert.docs.json +0 -0
  131. /package/src/04-components/{progress → feedback/progress}/progress-visual.png +0 -0
  132. /package/src/04-components/{progress → feedback/progress}/progress.api.json +0 -0
  133. /package/src/04-components/{progress → feedback/progress}/progress.docs.json +0 -0
  134. /package/src/04-components/{skeleton → feedback/skeleton}/skeleton-visual.png +0 -0
  135. /package/src/04-components/{skeleton → feedback/skeleton}/skeleton.api.json +0 -0
  136. /package/src/04-components/{skeleton → feedback/skeleton}/skeleton.docs.json +0 -0
  137. /package/src/04-components/{spinner → feedback/spinner}/spinner-visual.png +0 -0
  138. /package/src/04-components/{spinner → feedback/spinner}/spinner.api.json +0 -0
  139. /package/src/04-components/{spinner → feedback/spinner}/spinner.docs.json +0 -0
  140. /package/src/04-components/{toast → feedback/toast}/toast-visual.png +0 -0
  141. /package/src/04-components/{toast → feedback/toast}/toast.api.json +0 -0
  142. /package/src/04-components/{toast → feedback/toast}/toast.docs.json +0 -0
  143. /package/src/04-components/{checkbox → forms/checkbox}/checkbox-visual.png +0 -0
  144. /package/src/04-components/{checkbox → forms/checkbox}/checkbox.api.json +0 -0
  145. /package/src/04-components/{checkbox → forms/checkbox}/checkbox.docs.json +0 -0
  146. /package/src/04-components/{field → forms/field}/field-visual.png +0 -0
  147. /package/src/04-components/{field → forms/field}/field.api.json +0 -0
  148. /package/src/04-components/{field → forms/field}/field.docs.json +0 -0
  149. /package/src/04-components/{form-error → forms/form-error}/form-error-visual.png +0 -0
  150. /package/src/04-components/{form-error → forms/form-error}/form-error.api.json +0 -0
  151. /package/src/04-components/{form-error → forms/form-error}/form-error.docs.json +0 -0
  152. /package/src/04-components/{form-helper → forms/form-helper}/form-helper-visual.png +0 -0
  153. /package/src/04-components/{form-helper → forms/form-helper}/form-helper.api.json +0 -0
  154. /package/src/04-components/{form-helper → forms/form-helper}/form-helper.docs.json +0 -0
  155. /package/src/04-components/{input → forms/input}/input-visual.png +0 -0
  156. /package/src/04-components/{input → forms/input}/input.api.json +0 -0
  157. /package/src/04-components/{input → forms/input}/input.docs.json +0 -0
  158. /package/src/04-components/{label → forms/label}/label-visual.png +0 -0
  159. /package/src/04-components/{label → forms/label}/label.api.json +0 -0
  160. /package/src/04-components/{label → forms/label}/label.docs.json +0 -0
  161. /package/src/04-components/{radio → forms/radio}/radio-visual.png +0 -0
  162. /package/src/04-components/{radio → forms/radio}/radio.api.json +0 -0
  163. /package/src/04-components/{radio → forms/radio}/radio.docs.json +0 -0
  164. /package/src/04-components/{select → forms/select}/select-visual.png +0 -0
  165. /package/src/04-components/{select → forms/select}/select.api.json +0 -0
  166. /package/src/04-components/{select → forms/select}/select.docs.json +0 -0
  167. /package/src/04-components/{textarea → forms/textarea}/textarea-visual.png +0 -0
  168. /package/src/04-components/{textarea → forms/textarea}/textarea.api.json +0 -0
  169. /package/src/04-components/{textarea → forms/textarea}/textarea.docs.json +0 -0
  170. /package/src/04-components/{toggle → forms/toggle}/toggle-visual.png +0 -0
  171. /package/src/04-components/{toggle → forms/toggle}/toggle.api.json +0 -0
  172. /package/src/04-components/{toggle → forms/toggle}/toggle.docs.json +0 -0
  173. /package/src/04-components/{divider → layout/divider}/divider-visual.png +0 -0
  174. /package/src/04-components/{divider → layout/divider}/divider.api.json +0 -0
  175. /package/src/04-components/{divider → layout/divider}/divider.docs.json +0 -0
  176. /package/src/04-components/{breadcrumb → navigation/breadcrumb}/breadcrumb-visual.png +0 -0
  177. /package/src/04-components/{breadcrumb → navigation/breadcrumb}/breadcrumb.api.json +0 -0
  178. /package/src/04-components/{breadcrumb → navigation/breadcrumb}/breadcrumb.docs.json +0 -0
  179. /package/src/04-components/{menu → navigation/menu}/menu-visual.png +0 -0
  180. /package/src/04-components/{menu → navigation/menu}/menu.api.json +0 -0
  181. /package/src/04-components/{menu → navigation/menu}/menu.docs.json +0 -0
  182. /package/src/04-components/{nav → navigation/nav}/nav-visual.png +0 -0
  183. /package/src/04-components/{nav → navigation/nav}/nav.api.json +0 -0
  184. /package/src/04-components/{nav → navigation/nav}/nav.docs.json +0 -0
  185. /package/src/04-components/{pagination → navigation/pagination}/pagination-visual.png +0 -0
  186. /package/src/04-components/{pagination → navigation/pagination}/pagination.api.json +0 -0
  187. /package/src/04-components/{pagination → navigation/pagination}/pagination.docs.json +0 -0
  188. /package/src/04-components/{tabs → navigation/tabs}/tabs-visual.png +0 -0
  189. /package/src/04-components/{tabs → navigation/tabs}/tabs.api.json +0 -0
  190. /package/src/04-components/{tabs → navigation/tabs}/tabs.docs.json +0 -0
  191. /package/src/04-components/{dialog → overlays/dialog}/dialog-visual.png +0 -0
  192. /package/src/04-components/{dialog → overlays/dialog}/dialog.api.json +0 -0
  193. /package/src/04-components/{dialog → overlays/dialog}/dialog.docs.json +0 -0
  194. /package/src/04-components/{drawer → overlays/drawer}/drawer-visual.png +0 -0
  195. /package/src/04-components/{drawer → overlays/drawer}/drawer.api.json +0 -0
  196. /package/src/04-components/{drawer → overlays/drawer}/drawer.docs.json +0 -0
  197. /package/src/04-components/{modal → overlays/modal}/modal-visual.png +0 -0
  198. /package/src/04-components/{modal → overlays/modal}/modal.api.json +0 -0
  199. /package/src/04-components/{modal → overlays/modal}/modal.docs.json +0 -0
  200. /package/src/04-components/{overlay → overlays/overlay}/overlay-visual.png +0 -0
  201. /package/src/04-components/{overlay → overlays/overlay}/overlay.api.json +0 -0
  202. /package/src/04-components/{overlay → overlays/overlay}/overlay.docs.json +0 -0
  203. /package/src/04-components/{popover → overlays/popover}/popover-visual.png +0 -0
  204. /package/src/04-components/{popover → overlays/popover}/popover.api.json +0 -0
  205. /package/src/04-components/{popover → overlays/popover}/popover.docs.json +0 -0
  206. /package/src/04-components/{tooltip → overlays/tooltip}/tooltip-visual.png +0 -0
  207. /package/src/04-components/{tooltip → overlays/tooltip}/tooltip.api.json +0 -0
  208. /package/src/04-components/{tooltip → overlays/tooltip}/tooltip.docs.json +0 -0
  209. /package/src/04-components/{code → typography/code}/code-visual.png +0 -0
  210. /package/src/04-components/{code → typography/code}/code.api.json +0 -0
  211. /package/src/04-components/{code → typography/code}/code.docs.json +0 -0
  212. /package/src/04-components/{heading → typography/heading}/heading-visual.png +0 -0
  213. /package/src/04-components/{heading → typography/heading}/heading.api.json +0 -0
  214. /package/src/04-components/{heading → typography/heading}/heading.docs.json +0 -0
  215. /package/src/04-components/{link → typography/link}/link-visual.png +0 -0
  216. /package/src/04-components/{link → typography/link}/link.api.json +0 -0
  217. /package/src/04-components/{link → typography/link}/link.docs.json +0 -0
package/dist/index.css CHANGED
@@ -134,9 +134,9 @@
134
134
  --ui-border-width-lg: calc(var(--ui-unit) * 0.5);
135
135
  }
136
136
  :root {
137
- --ui-shadow-sm: 0 1px 2px hsl(var(--ui-hue-primary) 10% 20% / 0.05);
138
- --ui-shadow-md: 0 4px 6px hsl(var(--ui-hue-primary) 10% 20% / 0.1);
139
- --ui-shadow-lg: 0 10px 15px hsl(var(--ui-hue-primary) 10% 20% / 0.15);
137
+ --ui-shadow-sm: 0 1px 2px hsl(var(--ui-hue-primary, 220) 10% 20% / 0.05);
138
+ --ui-shadow-md: 0 4px 6px hsl(var(--ui-hue-primary, 220) 10% 20% / 0.1);
139
+ --ui-shadow-lg: 0 10px 15px hsl(var(--ui-hue-primary, 220) 10% 20% / 0.15);
140
140
  }
141
141
  @layer tokens {
142
142
  :root {
@@ -767,166 +767,255 @@
767
767
  }
768
768
  /* 04. Components */
769
769
  @layer components.tokens {
770
- .ui-accordion {
771
- --ui-_border-color: var(--ui-accordion-border-color, var(--ui-color-border, rgb(0 0 0 / 0.1)));
772
- --ui-_border-width: var(--ui-accordion-border-width, 1px);
773
- --ui-_radius: var(--ui-accordion-radius, var(--ui-radius-md, calc(0.5rem * 1)));
770
+ .ui-button {
771
+ --ui-_accent: var(--ui-button-accent, var(--ui-color-primary, oklch(55% 0.22 250deg)));
772
+ --ui-_height: var(--ui-button-height, var(--ui-row-2, 2rem));
773
+ --ui-_padding-x: var(--ui-button-padding-x, var(--ui-space-2, 1rem));
774
+ --ui-_font-size: var(--ui-button-font-size, var(--ui-font-size-sm, 0.875rem));
775
+ --ui-_font-weight: var(--ui-button-font-weight, var(--ui-weight-medium, 500));
776
+ --ui-_radius: var(--ui-button-radius, var(--ui-radius-md, 0.5rem));
777
+ --ui-_bg: var(--ui-_accent);
778
+ --ui-_bg-hover: color-mix(in oklch, var(--ui-_accent) 80%, black);
779
+ --ui-_text: var(--ui-button-text, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
774
780
  }
775
- }
776
- @layer components.styles {
777
- .ui-accordion {
778
- border-radius: var(--ui-_radius);
779
- outline: var(--ui-_border-width) solid var(--ui-_border-color);
780
- outline-offset: calc(var(--ui-_border-width) * -1);
781
+ .ui-button--sm {
782
+ --ui-ctx-size: var(--ui-size-sm, 0.75rem);
783
+ --ui-_height: var(--ui-button-height-sm, calc(var(--ui-row, 1rem) * 1.5));
784
+ --ui-_font-size: var(--ui-button-font-size-sm, var(--ui-font-size-xs, 0.75rem));
781
785
  }
782
- .ui-accordion > .ui-disclosure {
783
- --ui-_border-width: 0;
784
- border: none;
785
- border-radius: 0;
786
+ .ui-button--md {
787
+ --ui-ctx-size: var(--ui-size-md, 1rem);
788
+ --ui-_height: var(--ui-button-height-md, var(--ui-row-2, 2rem));
789
+ --ui-_font-size: var(--ui-button-font-size-md, var(--ui-font-size-sm, 0.875rem));
786
790
  }
787
- .ui-accordion > .ui-disclosure + .ui-disclosure {
788
- border-block-start: 1px solid var(--ui-_border-color);
791
+ .ui-button--lg {
792
+ --ui-ctx-size: var(--ui-size-lg, 1.25rem);
793
+ --ui-_height: var(--ui-button-height-lg, calc(var(--ui-row, 1rem) * 2.5));
794
+ --ui-_padding-x: var(--ui-button-padding-x-lg, var(--ui-space-3, 1.5rem));
795
+ --ui-_font-size: var(--ui-button-font-size-lg, var(--ui-font-size-md, 1rem));
789
796
  }
790
- .ui-accordion > .ui-disclosure:first-child .ui-disclosure__trigger {
791
- border-start-start-radius: var(--ui-_radius);
792
- border-start-end-radius: var(--ui-_radius);
797
+ .ui-button--secondary {
798
+ --ui-_bg: var(--ui-color-bg-muted, hsl(220, 10%, 90%));
799
+ --ui-_bg-hover: var(--ui-color-border-strong, hsl(220, 10%, 80%));
800
+ --ui-_text: var(--ui-color-text, hsl(220, 10%, 10%));
793
801
  }
794
- .ui-accordion > .ui-disclosure:last-child .ui-disclosure__trigger {
795
- border-end-start-radius: var(--ui-_radius);
796
- border-end-end-radius: var(--ui-_radius);
802
+ .ui-button--ghost {
803
+ --ui-_bg: transparent;
804
+ --ui-_bg-hover: color-mix(in oklch, var(--ui-_accent) 10%, transparent);
805
+ --ui-_text: var(--ui-_accent);
797
806
  }
798
- .ui-accordion > .ui-disclosure:last-child .ui-disclosure__content {
799
- border-end-start-radius: var(--ui-_radius);
800
- border-end-end-radius: var(--ui-_radius);
807
+ .ui-button--outline {
808
+ --ui-_bg: transparent;
809
+ --ui-_bg-hover: var(--ui-_accent);
810
+ --ui-_text: var(--ui-_accent);
811
+ --ui-_text-hover: var(--ui-color-text-inverse, hsl(220, 10%, 98%));
812
+ --ui-_border: var(--ui-border-width-sm, 0.0625rem) solid currentColor;
801
813
  }
802
- .ui-accordion--borderless {
803
- border: none;
814
+ .ui-button--danger {
815
+ --ui-_accent: var(--ui-color-danger, oklch(60% 0.22 25deg));
804
816
  }
805
- .ui-accordion--borderless > .ui-disclosure + .ui-disclosure {
806
- border-block-start: none;
817
+ .ui-button--link {
818
+ --ui-_bg: transparent;
819
+ --ui-_bg-hover: transparent;
820
+ --ui-_text: var(--ui-_accent);
821
+ --ui-_text-hover: color-mix(in oklch, var(--ui-_accent) 70%, black);
822
+ --ui-_height: auto;
823
+ --ui-_padding-x: 0;
824
+ --ui-_radius: 0;
807
825
  }
808
- .ui-accordion--separated {
809
- display: flex;
810
- flex-direction: column;
811
- gap: calc(0.5rem * 1);
812
- border: none;
826
+ .ui-button--icon {
827
+ --ui-_padding-x: 0;
813
828
  }
814
- .ui-accordion--separated > .ui-disclosure {
815
- border: 1px solid var(--ui-_border-color);
816
- border-radius: var(--ui-_radius);
829
+ .ui-button--radius-none {
830
+ --ui-_radius: 0;
817
831
  }
818
- .ui-accordion--separated > .ui-disclosure + .ui-disclosure {
819
- border-block-start: 1px solid var(--ui-_border-color);
832
+ .ui-button--radius-sm {
833
+ --ui-_radius: var(--ui-radius-sm, 0.25rem);
834
+ }
835
+ .ui-button--radius-lg {
836
+ --ui-_radius: var(--ui-radius-lg, 1rem);
837
+ }
838
+ .ui-button--radius-full {
839
+ --ui-_radius: 624.9375rem;
820
840
  }
821
841
  }
822
- @layer components.tokens {
823
- .ui-alert {
824
- --ui-_accent: var(--ui-alert-accent, var(--ui-color-border, hsl(220, 10%, 90%)));
825
- --ui-_padding: var(--ui-alert-padding, var(--ui-space-2, 1rem));
826
- --ui-_border-width: var(--ui-alert-border-width, var(--ui-border-width-sm, 0.0625rem));
827
- --ui-_gap: var(--ui-alert-gap, var(--ui-space-1, 0.5rem));
828
- --ui-_radius: var(--ui-alert-radius, var(--ui-radius-md, 0.5rem));
829
- --ui-_bg: color-mix(in oklch, var(--ui-_accent) 8%, white);
830
- --ui-_border-color: var(--ui-_accent);
831
- --ui-_color: var(--ui-alert-color, var(--ui-color-text, hsl(220, 10%, 10%)));
832
- --ui-_icon-color: var(--ui-_accent);
842
+ @layer components.styles {
843
+ .ui-button {
844
+ display: inline-flex;
845
+ align-items: center;
846
+ justify-content: center;
847
+ gap: var(--ui-space-1, 0.5rem);
848
+ block-size: var(--ui-_height);
849
+ padding-inline: var(--ui-_padding-x);
850
+ margin: 0;
851
+ font-family: var(--ui-font-sans, Noto Sans, system-ui, -apple-system, sans-serif);
852
+ font-size: var(--ui-_font-size);
853
+ font-weight: var(--ui-_font-weight);
854
+ line-height: 1;
855
+ text-decoration: none;
856
+ white-space: nowrap;
857
+ color: var(--ui-_text);
858
+ background: var(--ui-_bg);
859
+ border: var(--ui-_border, none);
860
+ border-radius: var(--ui-_radius);
861
+ cursor: pointer;
862
+ transition: background-color var(--ui-duration-base) var(--ui-ease-default), color var(--ui-duration-base) var(--ui-ease-default), transform var(--ui-duration-fast) var(--ui-ease-default);
833
863
  }
834
- .ui-alert--info {
835
- --ui-_accent: var(--ui-color-primary, oklch(55% 0.22 250deg));
864
+ .ui-button:hover, .ui-button--hover {
865
+ color: var(--ui-_text-hover, var(--ui-_text));
866
+ background: var(--ui-_bg-hover);
836
867
  }
837
- .ui-alert--success {
838
- --ui-_accent: var(--ui-color-success, oklch(60% 0.18 145deg));
868
+ .ui-button:focus-visible, .ui-button--focus {
869
+ outline: var(--ui-border-width-md, 0.125rem) solid var(--ui-color-focus, oklch(75% 0.15 250deg));
870
+ outline-offset: var(--ui-border-width-md, 0.125rem);
839
871
  }
840
- .ui-alert--warning {
841
- --ui-_accent: var(--ui-color-warning, oklch(75% 0.18 70deg));
872
+ .ui-button:active, .ui-button--active {
873
+ transform: scale(0.98);
842
874
  }
843
- .ui-alert--danger {
844
- --ui-_accent: var(--ui-color-danger, oklch(60% 0.22 25deg));
875
+ .ui-button:disabled {
876
+ opacity: 0.5;
877
+ cursor: not-allowed;
845
878
  }
846
- }
847
- @layer components.styles {
848
- .ui-alert {
849
- display: flex;
850
- align-items: flex-start;
851
- gap: var(--ui-_gap);
852
- padding: calc(var(--ui-_padding) - var(--ui-_border-width));
853
- padding-inline: var(--ui-_padding);
854
- color: var(--ui-_color);
879
+ .ui-button:disabled:hover {
855
880
  background: var(--ui-_bg);
856
- border: var(--ui-_border-width) solid var(--ui-_border-color);
857
- border-radius: var(--ui-_radius);
858
- border-inline-start-width: calc(0.5rem * 0.5);
881
+ transform: none;
859
882
  }
860
- .ui-alert__icon {
861
- flex-shrink: 0;
862
- color: var(--ui-_icon-color);
883
+ .ui-button--icon {
884
+ inline-size: var(--ui-_height);
863
885
  }
864
- .ui-alert__content {
865
- flex: 1;
866
- min-inline-size: 0;
886
+ .ui-button--block {
887
+ inline-size: 100%;
867
888
  }
868
- .ui-alert__title {
869
- margin: 0;
870
- font-weight: var(--ui-weight-medium, 500);
871
- line-height: var(--ui-row-1, 1rem);
889
+ .ui-button--link {
890
+ text-decoration: underline;
891
+ text-underline-offset: var(--ui-space-quarter);
872
892
  }
873
- .ui-alert__description {
874
- margin: 0;
875
- margin-block-start: calc(0.5rem * 1);
876
- font-size: var(--ui-font-size-sm, 0.875rem);
877
- line-height: var(--ui-row-1, 1rem);
878
- color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
893
+ .ui-button--link:hover {
894
+ text-decoration-thickness: var(--ui-space-quarter);
879
895
  }
880
- .ui-alert__close {
896
+ .ui-button__icon {
881
897
  flex-shrink: 0;
882
- align-self: flex-start;
883
- padding: 0;
884
- color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
885
- background: none;
886
- border: none;
887
- cursor: pointer;
888
- }
889
- .ui-alert__close:hover {
890
- color: var(--ui-color-text, hsl(220, 10%, 10%));
898
+ block-size: 1em;
899
+ inline-size: 1em;
891
900
  }
892
- }
893
- @layer components.tokens {
894
- .ui-avatar {
895
- --ui-_size: var(--ui-avatar-size, calc(0.5rem * 5));
896
- --ui-_bg: var(--ui-avatar-bg, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
897
- --ui-_color: var(--ui-avatar-color, var(--ui-color-text-muted, hsl(220, 10%, 45%)));
898
- --ui-_font-size: var(--ui-avatar-font-size, var(--ui-font-size-sm, 0.875rem));
899
- --ui-_radius: var(--ui-avatar-radius, 50%);
901
+ .ui-button__icon--start {
902
+ order: -1;
900
903
  }
901
- .ui-avatar--xs {
902
- --ui-_size: var(--ui-avatar-size-xs, calc(0.5rem * 3));
903
- --ui-_font-size: var(--ui-avatar-font-size-xs, var(--ui-font-size-xs, 0.75rem));
904
+ .ui-button__icon--end {
905
+ order: 1;
904
906
  }
905
- .ui-avatar--sm {
906
- --ui-_size: var(--ui-avatar-size-sm, calc(0.5rem * 4));
907
- --ui-_font-size: var(--ui-avatar-font-size-sm, var(--ui-font-size-xs, 0.75rem));
907
+ .ui-button--loading {
908
+ position: relative;
909
+ opacity: 0.7;
910
+ pointer-events: none;
908
911
  }
909
- .ui-avatar--lg {
910
- --ui-_size: var(--ui-avatar-size-lg, calc(0.5rem * 6));
911
- --ui-_font-size: var(--ui-avatar-font-size-lg, var(--ui-font-size-md, 1rem));
912
+ .ui-button--loading::after {
913
+ content: "";
914
+ position: absolute;
915
+ block-size: 1em;
916
+ inline-size: 1em;
917
+ border: 2px solid currentcolor;
918
+ border-radius: 50%;
919
+ animation: button-spin 0.6s linear infinite;
920
+ border-inline-end-color: transparent;
912
921
  }
913
- .ui-avatar--xl {
914
- --ui-_size: var(--ui-avatar-size-xl, calc(0.5rem * 8));
915
- --ui-_font-size: var(--ui-avatar-font-size-xl, var(--ui-font-size-lg, 1.25rem));
922
+ @keyframes button-spin {
923
+ to {
924
+ transform: rotate(360deg);
925
+ }
916
926
  }
917
- .ui-avatar--square {
918
- --ui-_radius: var(--ui-avatar-radius-square, var(--ui-radius-md, 0.5rem));
927
+ }
928
+ @layer components.tokens {
929
+ .ui-button-group {
930
+ --ui-_radius: var(--ui-button-group-radius, var(--ui-radius-md, calc(0.5rem / 2)));
919
931
  }
920
932
  }
921
933
  @layer components.styles {
922
- .ui-avatar {
934
+ .ui-button-group {
923
935
  display: inline-flex;
924
- flex-shrink: 0;
925
- align-items: center;
926
- justify-content: center;
927
- position: relative;
928
- block-size: var(--ui-_size);
929
- inline-size: var(--ui-_size);
936
+ }
937
+ .ui-button-group > .ui-button:not(:first-child, :last-child) {
938
+ border-radius: 0;
939
+ }
940
+ .ui-button-group > .ui-button:first-child:not(:last-child) {
941
+ border-start-end-radius: 0;
942
+ border-end-end-radius: 0;
943
+ }
944
+ .ui-button-group > .ui-button:last-child:not(:first-child) {
945
+ border-start-start-radius: 0;
946
+ border-end-start-radius: 0;
947
+ }
948
+ .ui-button-group > .ui-button + .ui-button {
949
+ margin-inline-start: calc(0.5rem / -8);
950
+ }
951
+ .ui-button-group > .ui-button:focus-visible {
952
+ z-index: 1;
953
+ }
954
+ .ui-button-group--vertical {
955
+ flex-direction: column;
956
+ }
957
+ .ui-button-group--vertical > .ui-button:not(:first-child, :last-child) {
958
+ border-radius: 0;
959
+ }
960
+ .ui-button-group--vertical > .ui-button:first-child:not(:last-child) {
961
+ border-end-start-radius: 0;
962
+ border-end-end-radius: 0;
963
+ }
964
+ .ui-button-group--vertical > .ui-button:last-child:not(:first-child) {
965
+ border-start-start-radius: 0;
966
+ border-start-end-radius: 0;
967
+ }
968
+ .ui-button-group--vertical > .ui-button + .ui-button {
969
+ margin-block-start: calc(0.5rem / -8);
970
+ margin-inline-start: 0;
971
+ }
972
+ .ui-button-group--attached > .ui-button {
973
+ border-inline-end-width: 0;
974
+ }
975
+ .ui-button-group--attached > .ui-button:last-child {
976
+ border-inline-end-width: 1px;
977
+ }
978
+ .ui-button-group--attached > .ui-button + .ui-button {
979
+ margin-inline-start: 0;
980
+ }
981
+ }
982
+ @layer components.tokens {
983
+ .ui-avatar {
984
+ --ui-_size: var(--ui-avatar-size, calc(0.5rem * 5));
985
+ --ui-_bg: var(--ui-avatar-bg, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
986
+ --ui-_color: var(--ui-avatar-color, var(--ui-color-text-muted, hsl(220, 10%, 45%)));
987
+ --ui-_font-size: var(--ui-avatar-font-size, var(--ui-font-size-sm, 0.875rem));
988
+ --ui-_radius: var(--ui-avatar-radius, 50%);
989
+ }
990
+ .ui-avatar--xs {
991
+ --ui-_size: var(--ui-avatar-size-xs, calc(0.5rem * 3));
992
+ --ui-_font-size: var(--ui-avatar-font-size-xs, var(--ui-font-size-xs, 0.75rem));
993
+ }
994
+ .ui-avatar--sm {
995
+ --ui-_size: var(--ui-avatar-size-sm, calc(0.5rem * 4));
996
+ --ui-_font-size: var(--ui-avatar-font-size-sm, var(--ui-font-size-xs, 0.75rem));
997
+ }
998
+ .ui-avatar--lg {
999
+ --ui-_size: var(--ui-avatar-size-lg, calc(0.5rem * 6));
1000
+ --ui-_font-size: var(--ui-avatar-font-size-lg, var(--ui-font-size-md, 1rem));
1001
+ }
1002
+ .ui-avatar--xl {
1003
+ --ui-_size: var(--ui-avatar-size-xl, calc(0.5rem * 8));
1004
+ --ui-_font-size: var(--ui-avatar-font-size-xl, var(--ui-font-size-lg, 1.25rem));
1005
+ }
1006
+ .ui-avatar--square {
1007
+ --ui-_radius: var(--ui-avatar-radius-square, var(--ui-radius-md, 0.5rem));
1008
+ }
1009
+ }
1010
+ @layer components.styles {
1011
+ .ui-avatar {
1012
+ display: inline-flex;
1013
+ flex-shrink: 0;
1014
+ align-items: center;
1015
+ justify-content: center;
1016
+ position: relative;
1017
+ block-size: var(--ui-_size);
1018
+ inline-size: var(--ui-_size);
930
1019
  overflow: hidden;
931
1020
  font-size: var(--ui-_font-size);
932
1021
  font-weight: var(--ui-weight-medium, 500);
@@ -1015,589 +1104,436 @@
1015
1104
  }
1016
1105
  }
1017
1106
  @layer components.tokens {
1018
- .ui-breadcrumb {
1019
- --ui-_height: var(--ui-breadcrumb-height, var(--ui-row-1, 1rem));
1020
- --ui-_gap: var(--ui-breadcrumb-gap, calc(0.5rem * 1));
1021
- --ui-_separator-color: var(--ui-breadcrumb-separator-color, var(--ui-color-text-muted));
1022
- --ui-_link-color: var(--ui-breadcrumb-link-color, var(--ui-color-text-muted));
1023
- --ui-_current-color: var(--ui-breadcrumb-current-color, var(--ui-color-text));
1107
+ .ui-card {
1108
+ --ui-_padding: var(--ui-card-padding, var(--ui-space-4));
1109
+ --ui-_border-width: var(--ui-card-border-width, var(--ui-border-width-sm));
1110
+ --ui-_bg: var(--ui-card-bg, var(--ui-color-bg));
1111
+ --ui-_border-color: var(--ui-card-border-color, var(--ui-color-border));
1112
+ --ui-_radius: var(--ui-card-radius, var(--ui-radius-md));
1113
+ }
1114
+ .ui-card--subtle {
1115
+ --ui-_bg: var(--ui-card-bg-subtle, var(--ui-color-bg-subtle));
1116
+ }
1117
+ .ui-card--muted {
1118
+ --ui-_bg: var(--ui-card-bg-muted, var(--ui-color-bg-muted));
1119
+ }
1120
+ .ui-card--sm {
1121
+ --ui-_padding: var(--ui-card-padding-sm, var(--ui-space-2));
1122
+ }
1123
+ .ui-card--lg {
1124
+ --ui-_padding: var(--ui-card-padding-lg, var(--ui-space-6));
1125
+ }
1126
+ .ui-card--flush {
1127
+ --ui-_padding: 0;
1128
+ --ui-_border-width: 0;
1024
1129
  }
1025
1130
  }
1026
1131
  @layer components.styles {
1027
- .ui-breadcrumb {
1132
+ .ui-card {
1133
+ border: var(--ui-_border-width) solid var(--ui-_border-color);
1134
+ border-radius: var(--ui-_radius);
1135
+ background: var(--ui-_bg);
1136
+ padding: calc(var(--ui-_padding) - var(--ui-_border-width));
1137
+ line-height: var(--ui-row-1);
1138
+ }
1139
+ }
1140
+ @layer components.tokens {
1141
+ .ui-data-list {
1142
+ --ui-_gap: var(--ui-data-list-gap, calc(0.5rem * 2));
1143
+ --ui-_item-gap: var(--ui-data-list-item-gap, calc(0.5rem * 1));
1144
+ --ui-_label-color: var(--ui-data-list-label-color, var(--ui-color-text-muted, hsl(220, 10%, 45%)));
1145
+ --ui-_value-color: var(--ui-data-list-value-color, var(--ui-color-text, hsl(220, 10%, 10%)));
1146
+ }
1147
+ }
1148
+ @layer components.styles {
1149
+ .ui-data-list {
1028
1150
  display: flex;
1029
- flex-wrap: wrap;
1030
- align-items: center;
1151
+ flex-direction: column;
1031
1152
  gap: var(--ui-_gap);
1032
- block-size: var(--ui-_height);
1033
- padding: 0;
1034
1153
  margin: 0;
1035
- font-size: var(--ui-font-size-sm, 0.875rem);
1036
- line-height: 1;
1037
- list-style: none;
1154
+ line-height: var(--ui-row-1, 1rem);
1038
1155
  }
1039
- .ui-breadcrumb__item {
1156
+ .ui-data-list__item {
1040
1157
  display: flex;
1041
- align-items: center;
1042
- gap: var(--ui-_gap);
1043
- block-size: var(--ui-_height);
1158
+ flex-direction: column;
1159
+ gap: var(--ui-_item-gap);
1044
1160
  }
1045
- .ui-breadcrumb__item:not(:last-child)::after {
1046
- content: var(--ui-breadcrumb-separator, "/");
1047
- color: var(--ui-_separator-color);
1161
+ .ui-data-list__label {
1162
+ font-size: var(--ui-font-size-sm, 0.875rem);
1163
+ font-weight: var(--ui-weight-medium, 500);
1164
+ line-height: var(--ui-row-1, 1rem);
1165
+ color: var(--ui-_label-color);
1048
1166
  }
1049
- .ui-breadcrumb__link {
1050
- text-decoration: none;
1051
- color: var(--ui-_link-color);
1052
- transition: color var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
1167
+ .ui-data-list__value {
1168
+ margin: 0;
1169
+ line-height: var(--ui-row-1, 1rem);
1170
+ color: var(--ui-_value-color);
1053
1171
  }
1054
- .ui-breadcrumb__link:hover {
1055
- text-decoration: underline;
1056
- color: var(--ui-color-primary);
1172
+ .ui-data-list--horizontal .ui-data-list__item {
1173
+ flex-direction: row;
1174
+ align-items: baseline;
1175
+ justify-content: space-between;
1176
+ gap: calc(0.5rem * 2);
1057
1177
  }
1058
- .ui-breadcrumb__item:last-child .ui-breadcrumb__link,
1059
- .ui-breadcrumb__current {
1060
- color: var(--ui-_current-color);
1061
- pointer-events: none;
1178
+ .ui-data-list--horizontal .ui-data-list__label {
1179
+ flex-shrink: 0;
1062
1180
  }
1063
- .ui-breadcrumb__item--hidden {
1064
- display: none;
1181
+ .ui-data-list--horizontal .ui-data-list__value {
1182
+ text-align: end;
1065
1183
  }
1066
- .ui-breadcrumb__ellipsis {
1067
- color: var(--ui-_separator-color);
1184
+ .ui-data-list--divided .ui-data-list__item {
1185
+ padding-block-end: calc(var(--ui-_gap) - var(--ui-border-width-sm, 0.0625rem));
1186
+ border-block-end: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-color-border, hsl(220, 10%, 90%));
1187
+ }
1188
+ .ui-data-list--divided .ui-data-list__item:last-child {
1189
+ padding-block-end: 0;
1190
+ border-block-end: none;
1191
+ }
1192
+ .ui-data-list--striped .ui-data-list__item:nth-child(odd) {
1193
+ padding: calc(0.5rem * 1);
1194
+ background: var(--ui-color-bg-subtle, hsl(220, 10%, 96%));
1195
+ border-radius: var(--ui-radius-sm, 0.25rem);
1196
+ }
1197
+ .ui-data-list--sm {
1198
+ --ui-_gap: calc(0.5rem * 1);
1199
+ --ui-_item-gap: 0;
1200
+ font-size: var(--ui-font-size-sm, 0.875rem);
1201
+ }
1202
+ .ui-data-list--lg {
1203
+ --ui-_gap: calc(0.5rem * 3);
1204
+ --ui-_item-gap: calc(0.5rem * 1);
1205
+ font-size: var(--ui-font-size-lg, 1.25rem);
1068
1206
  }
1069
1207
  }
1070
1208
  @layer components.tokens {
1071
- .ui-button {
1072
- --ui-_accent: var(--ui-button-accent, var(--ui-color-primary, oklch(55% 0.22 250deg)));
1073
- --ui-_height: var(--ui-button-height, var(--ui-row-2, 2rem));
1074
- --ui-_padding-x: var(--ui-button-padding-x, var(--ui-space-2, 1rem));
1075
- --ui-_font-size: var(--ui-button-font-size, var(--ui-font-size-sm, 0.875rem));
1076
- --ui-_font-weight: var(--ui-button-font-weight, var(--ui-weight-medium, 500));
1077
- --ui-_radius: var(--ui-button-radius, var(--ui-radius-md, 0.5rem));
1078
- --ui-_bg: var(--ui-_accent);
1079
- --ui-_bg-hover: color-mix(in oklch, var(--ui-_accent) 80%, black);
1080
- --ui-_text: var(--ui-button-text, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
1209
+ .ui-icon {
1210
+ --ui-_size: var(--ui-icon-size, var(--ui-ctx-size, 1rem));
1211
+ --ui-_stroke: var(--ui-icon-stroke, 2);
1081
1212
  }
1082
- .ui-button--sm {
1083
- --ui-ctx-size: var(--ui-size-sm, 0.75rem);
1084
- --ui-_height: var(--ui-button-height-sm, calc(var(--ui-row, 1rem) * 1.5));
1085
- --ui-_font-size: var(--ui-button-font-size-sm, var(--ui-font-size-xs, 0.75rem));
1213
+ .ui-icon--xs {
1214
+ --ui-_size: var(--ui-icon-size-xs, var(--ui-size-xs, 0.5rem));
1086
1215
  }
1087
- .ui-button--md {
1088
- --ui-ctx-size: var(--ui-size-md, 1rem);
1089
- --ui-_height: var(--ui-button-height-md, var(--ui-row-2, 2rem));
1090
- --ui-_font-size: var(--ui-button-font-size-md, var(--ui-font-size-sm, 0.875rem));
1216
+ .ui-icon--sm {
1217
+ --ui-_size: var(--ui-icon-size-sm, var(--ui-size-sm, 0.75rem));
1091
1218
  }
1092
- .ui-button--lg {
1093
- --ui-ctx-size: var(--ui-size-lg, 1.25rem);
1094
- --ui-_height: var(--ui-button-height-lg, calc(var(--ui-row, 1rem) * 2.5));
1095
- --ui-_padding-x: var(--ui-button-padding-x-lg, var(--ui-space-3, 1.5rem));
1096
- --ui-_font-size: var(--ui-button-font-size-lg, var(--ui-font-size-md, 1rem));
1219
+ .ui-icon--md {
1220
+ --ui-_size: var(--ui-icon-size-md, var(--ui-size-md, 1rem));
1097
1221
  }
1098
- .ui-button--secondary {
1099
- --ui-_bg: var(--ui-color-bg-muted, hsl(220, 10%, 90%));
1100
- --ui-_bg-hover: var(--ui-color-border-strong, hsl(220, 10%, 80%));
1101
- --ui-_text: var(--ui-color-text, hsl(220, 10%, 10%));
1222
+ .ui-icon--lg {
1223
+ --ui-_size: var(--ui-icon-size-lg, var(--ui-size-lg, 1.25rem));
1102
1224
  }
1103
- .ui-button--ghost {
1104
- --ui-_bg: transparent;
1105
- --ui-_bg-hover: color-mix(in oklch, var(--ui-_accent) 10%, transparent);
1106
- --ui-_text: var(--ui-_accent);
1225
+ .ui-icon--xl {
1226
+ --ui-_size: var(--ui-icon-size-xl, var(--ui-size-xl, 1.5rem));
1107
1227
  }
1108
- .ui-button--outline {
1109
- --ui-_bg: transparent;
1110
- --ui-_bg-hover: var(--ui-_accent);
1111
- --ui-_text: var(--ui-_accent);
1112
- --ui-_text-hover: var(--ui-color-text-inverse, hsl(220, 10%, 98%));
1113
- --ui-_border: var(--ui-border-width-sm, 0.0625rem) solid currentColor;
1228
+ .ui-icon--stroke-thin {
1229
+ --ui-_stroke: var(--ui-icon-stroke-thin, 1);
1114
1230
  }
1115
- .ui-button--danger {
1116
- --ui-_accent: var(--ui-color-danger, oklch(60% 0.22 25deg));
1117
- }
1118
- .ui-button--link {
1119
- --ui-_bg: transparent;
1120
- --ui-_bg-hover: transparent;
1121
- --ui-_text: var(--ui-_accent);
1122
- --ui-_text-hover: color-mix(in oklch, var(--ui-_accent) 70%, black);
1123
- --ui-_height: auto;
1124
- --ui-_padding-x: 0;
1125
- --ui-_radius: 0;
1126
- }
1127
- .ui-button--icon {
1128
- --ui-_padding-x: 0;
1129
- }
1130
- .ui-button--radius-none {
1131
- --ui-_radius: 0;
1132
- }
1133
- .ui-button--radius-sm {
1134
- --ui-_radius: var(--ui-radius-sm, 0.25rem);
1135
- }
1136
- .ui-button--radius-lg {
1137
- --ui-_radius: var(--ui-radius-lg, 1rem);
1138
- }
1139
- .ui-button--radius-full {
1140
- --ui-_radius: 624.9375rem;
1231
+ .ui-icon--stroke-thick {
1232
+ --ui-_stroke: var(--ui-icon-stroke-thick, 2.5);
1141
1233
  }
1142
1234
  }
1143
1235
  @layer components.styles {
1144
- .ui-button {
1145
- display: inline-flex;
1146
- align-items: center;
1147
- justify-content: center;
1148
- gap: var(--ui-space-1, 0.5rem);
1149
- block-size: var(--ui-_height);
1150
- padding-inline: var(--ui-_padding-x);
1151
- margin: 0;
1152
- font-family: var(--ui-font-sans, Noto Sans, system-ui, -apple-system, sans-serif);
1153
- font-size: var(--ui-_font-size);
1154
- font-weight: var(--ui-_font-weight);
1155
- line-height: 1;
1156
- text-decoration: none;
1157
- white-space: nowrap;
1158
- color: var(--ui-_text);
1159
- background: var(--ui-_bg);
1160
- border: var(--ui-_border, none);
1161
- border-radius: var(--ui-_radius);
1162
- cursor: pointer;
1163
- transition: background-color var(--ui-duration-base) var(--ui-ease-default), color var(--ui-duration-base) var(--ui-ease-default), transform var(--ui-duration-fast) var(--ui-ease-default);
1236
+ .ui-icon {
1237
+ display: inline-block;
1238
+ flex-shrink: 0;
1239
+ block-size: var(--ui-_size);
1240
+ inline-size: var(--ui-_size);
1241
+ vertical-align: middle;
1242
+ color: currentcolor;
1243
+ fill: none;
1244
+ stroke: currentcolor;
1245
+ stroke-width: var(--ui-_stroke);
1246
+ stroke-linecap: round;
1247
+ stroke-linejoin: round;
1164
1248
  }
1165
- .ui-button:hover, .ui-button--hover {
1166
- color: var(--ui-_text-hover, var(--ui-_text));
1167
- background: var(--ui-_bg-hover);
1249
+ .ui-icon--filled {
1250
+ fill: currentcolor;
1251
+ stroke: none;
1168
1252
  }
1169
- .ui-button:focus-visible, .ui-button--focus {
1170
- outline: var(--ui-border-width-md, 0.125rem) solid var(--ui-color-focus, oklch(75% 0.15 250deg));
1171
- outline-offset: var(--ui-border-width-md, 0.125rem);
1253
+ .ui-icon--spin {
1254
+ animation: icon-spin 1s linear infinite;
1172
1255
  }
1173
- .ui-button:active, .ui-button--active {
1174
- transform: scale(0.98);
1256
+ @keyframes icon-spin {
1257
+ to {
1258
+ transform: rotate(360deg);
1259
+ }
1175
1260
  }
1176
- .ui-button:disabled {
1177
- opacity: 0.5;
1178
- cursor: not-allowed;
1261
+ }
1262
+ @layer components.tokens {
1263
+ .ui-status {
1264
+ --ui-_size: var(--ui-status-size, calc(0.5rem * 1));
1265
+ --ui-_color: var(--ui-status-color, var(--ui-color-text-muted));
1266
+ --ui-_gap: var(--ui-status-gap, calc(0.5rem * 1));
1179
1267
  }
1180
- .ui-button:disabled:hover {
1181
- background: var(--ui-_bg);
1182
- transform: none;
1268
+ .ui-status--success {
1269
+ --ui-_color: var(--ui-color-success);
1183
1270
  }
1184
- .ui-button--icon {
1185
- inline-size: var(--ui-_height);
1271
+ .ui-status--warning {
1272
+ --ui-_color: var(--ui-color-warning);
1186
1273
  }
1187
- .ui-button--block {
1188
- inline-size: 100%;
1274
+ .ui-status--danger {
1275
+ --ui-_color: var(--ui-color-danger);
1189
1276
  }
1190
- .ui-button--link {
1191
- text-decoration: underline;
1192
- text-underline-offset: var(--ui-space-quarter);
1277
+ .ui-status--info {
1278
+ --ui-_color: var(--ui-color-primary);
1193
1279
  }
1194
- .ui-button--link:hover {
1195
- text-decoration-thickness: var(--ui-space-quarter);
1280
+ }
1281
+ @layer components.styles {
1282
+ .ui-status {
1283
+ display: inline-flex;
1284
+ align-items: center;
1285
+ gap: var(--ui-_gap);
1196
1286
  }
1197
- .ui-button__icon {
1287
+ .ui-status__dot {
1198
1288
  flex-shrink: 0;
1199
- block-size: 1em;
1200
- inline-size: 1em;
1201
- }
1202
- .ui-button__icon--start {
1203
- order: -1;
1204
- }
1205
- .ui-button__icon--end {
1206
- order: 1;
1289
+ block-size: var(--ui-_size);
1290
+ inline-size: var(--ui-_size);
1291
+ background: var(--ui-_color);
1292
+ border-radius: 50%;
1207
1293
  }
1208
- .ui-button--loading {
1294
+ .ui-status--pulse .ui-status__dot {
1209
1295
  position: relative;
1210
- opacity: 0.7;
1211
- pointer-events: none;
1212
1296
  }
1213
- .ui-button--loading::after {
1297
+ .ui-status--pulse .ui-status__dot::before {
1214
1298
  content: "";
1215
1299
  position: absolute;
1216
- block-size: 1em;
1217
- inline-size: 1em;
1218
- border: 2px solid currentcolor;
1300
+ inset: 0;
1301
+ background: var(--ui-_color);
1219
1302
  border-radius: 50%;
1220
- animation: button-spin 0.6s linear infinite;
1221
- border-inline-end-color: transparent;
1303
+ animation: status-pulse 2s infinite;
1222
1304
  }
1223
- @keyframes button-spin {
1224
- to {
1225
- transform: rotate(360deg);
1305
+ @keyframes status-pulse {
1306
+ 0% {
1307
+ opacity: 1;
1308
+ transform: scale(1);
1309
+ }
1310
+ 100% {
1311
+ opacity: 0;
1312
+ transform: scale(2.5);
1226
1313
  }
1227
1314
  }
1315
+ .ui-status--sm {
1316
+ --ui-_size: calc(0.5rem * 0.75);
1317
+ --ui-_gap: calc(0.5rem * 0.75);
1318
+ }
1319
+ .ui-status--lg {
1320
+ --ui-_size: calc(0.5rem * 1.5);
1321
+ --ui-_gap: calc(0.5rem * 1.5);
1322
+ }
1228
1323
  }
1229
1324
  @layer components.tokens {
1230
- .ui-button-group {
1231
- --ui-_radius: var(--ui-button-group-radius, var(--ui-radius-md, calc(0.5rem / 2)));
1325
+ .ui-table {
1326
+ --ui-_font-size: var(--ui-table-font-size, var(--ui-font-size-sm, 0.875rem));
1327
+ --ui-_border-color: var(--ui-table-border-color, var(--ui-color-border, hsl(220, 10%, 90%)));
1328
+ --ui-_header-bg: var(--ui-table-header-bg, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
1329
+ --ui-_cell-padding-x: var(--ui-table-cell-padding-x, var(--ui-space-2, 1rem));
1330
+ --ui-_cell-padding-y: var(--ui-table-cell-padding-y, var(--ui-space-1, 0.5rem));
1331
+ }
1332
+ .ui-table--compact {
1333
+ --ui-_cell-padding-y: var(--ui-space-0, 0.25rem);
1334
+ --ui-_cell-padding-x: var(--ui-space-1, 0.5rem);
1335
+ --ui-_font-size: var(--ui-font-size-xs, 0.75rem);
1232
1336
  }
1233
1337
  }
1234
1338
  @layer components.styles {
1235
- .ui-button-group {
1236
- display: inline-flex;
1237
- }
1238
- .ui-button-group > .ui-button:not(:first-child, :last-child) {
1239
- border-radius: 0;
1240
- }
1241
- .ui-button-group > .ui-button:first-child:not(:last-child) {
1242
- border-start-end-radius: 0;
1243
- border-end-end-radius: 0;
1244
- }
1245
- .ui-button-group > .ui-button:last-child:not(:first-child) {
1246
- border-start-start-radius: 0;
1247
- border-end-start-radius: 0;
1339
+ .ui-table {
1340
+ inline-size: 100%;
1341
+ font-size: var(--ui-_font-size);
1342
+ border-collapse: separate;
1343
+ border-spacing: 0;
1248
1344
  }
1249
- .ui-button-group > .ui-button + .ui-button {
1250
- margin-inline-start: calc(0.5rem / -8);
1345
+ .ui-table th,
1346
+ .ui-table td {
1347
+ padding-block-start: var(--ui-_cell-padding-y);
1348
+ padding-block-end: calc(var(--ui-_cell-padding-y) - var(--ui-border-width-sm, 0.0625rem));
1349
+ padding-inline: var(--ui-_cell-padding-x);
1350
+ line-height: calc(var(--ui-unit, 0.5rem) * 3);
1351
+ text-align: start;
1352
+ border-block-end: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
1251
1353
  }
1252
- .ui-button-group > .ui-button:focus-visible {
1253
- z-index: 1;
1354
+ .ui-table th {
1355
+ font-weight: var(--ui-weight-medium, 500);
1356
+ background: var(--ui-_header-bg);
1254
1357
  }
1255
- .ui-button-group--vertical {
1256
- flex-direction: column;
1358
+ .ui-table--striped tbody tr:nth-child(odd) {
1359
+ background: var(--ui-color-bg-subtle, hsl(220, 10%, 96%));
1257
1360
  }
1258
- .ui-button-group--vertical > .ui-button:not(:first-child, :last-child) {
1259
- border-radius: 0;
1361
+ .ui-table--striped th {
1362
+ background: var(--ui-color-bg-muted, hsl(220, 10%, 90%));
1260
1363
  }
1261
- .ui-button-group--vertical > .ui-button:first-child:not(:last-child) {
1262
- border-end-start-radius: 0;
1263
- border-end-end-radius: 0;
1364
+ }
1365
+ @layer components.tokens {
1366
+ .ui-tag {
1367
+ --ui-_height: var(--ui-tag-height, calc(0.5rem * 3));
1368
+ --ui-_padding-x: var(--ui-tag-padding-x, var(--ui-space-1, 0.5rem));
1369
+ --ui-_gap: var(--ui-tag-gap, calc(0.5rem * 0.5));
1370
+ --ui-_radius: var(--ui-tag-radius, var(--ui-radius-full, 9999px));
1371
+ --ui-_font-size: var(--ui-tag-font-size, var(--ui-font-size-sm, 0.875rem));
1372
+ --ui-_bg: var(--ui-tag-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
1373
+ --ui-_color: var(--ui-tag-color, var(--ui-color-text, hsl(220, 10%, 10%)));
1264
1374
  }
1265
- .ui-button-group--vertical > .ui-button:last-child:not(:first-child) {
1266
- border-start-start-radius: 0;
1267
- border-start-end-radius: 0;
1375
+ .ui-tag--sm {
1376
+ --ui-_height: var(--ui-tag-height-sm, calc(0.5rem * 2.5));
1377
+ --ui-_padding-x: var(--ui-tag-padding-x-sm, calc(0.5rem * 1));
1378
+ --ui-_font-size: var(--ui-tag-font-size-sm, var(--ui-font-size-xs, 0.75rem));
1268
1379
  }
1269
- .ui-button-group--vertical > .ui-button + .ui-button {
1270
- margin-block-start: calc(0.5rem / -8);
1271
- margin-inline-start: 0;
1380
+ .ui-tag--primary {
1381
+ --ui-_bg: var(--ui-tag-primary-bg, var(--ui-color-primary, oklch(55% 0.22 250deg)));
1382
+ --ui-_color: var(--ui-tag-primary-color, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
1272
1383
  }
1273
- .ui-button-group--attached > .ui-button {
1274
- border-inline-end-width: 0;
1384
+ .ui-tag--success {
1385
+ --ui-_bg: var(--ui-tag-success-bg, var(--ui-color-success, oklch(60% 0.18 145deg)));
1386
+ --ui-_color: var(--ui-tag-success-color, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
1275
1387
  }
1276
- .ui-button-group--attached > .ui-button:last-child {
1277
- border-inline-end-width: 1px;
1388
+ .ui-tag--warning {
1389
+ --ui-_bg: var(--ui-tag-warning-bg, var(--ui-color-warning, oklch(75% 0.18 70deg)));
1390
+ --ui-_color: var(--ui-tag-warning-color, var(--ui-color-text, hsl(220, 10%, 10%)));
1278
1391
  }
1279
- .ui-button-group--attached > .ui-button + .ui-button {
1280
- margin-inline-start: 0;
1281
- }
1282
- }
1283
- @layer components.tokens {
1284
- .ui-card {
1285
- --ui-_padding: var(--ui-card-padding, var(--ui-space-4));
1286
- --ui-_border-width: var(--ui-card-border-width, var(--ui-border-width-sm));
1287
- --ui-_bg: var(--ui-card-bg, var(--ui-color-bg));
1288
- --ui-_border-color: var(--ui-card-border-color, var(--ui-color-border));
1289
- --ui-_radius: var(--ui-card-radius, var(--ui-radius-md));
1290
- }
1291
- .ui-card--subtle {
1292
- --ui-_bg: var(--ui-card-bg-subtle, var(--ui-color-bg-subtle));
1293
- }
1294
- .ui-card--muted {
1295
- --ui-_bg: var(--ui-card-bg-muted, var(--ui-color-bg-muted));
1296
- }
1297
- .ui-card--sm {
1298
- --ui-_padding: var(--ui-card-padding-sm, var(--ui-space-2));
1299
- }
1300
- .ui-card--lg {
1301
- --ui-_padding: var(--ui-card-padding-lg, var(--ui-space-6));
1302
- }
1303
- .ui-card--flush {
1304
- --ui-_padding: 0;
1305
- --ui-_border-width: 0;
1392
+ .ui-tag--danger {
1393
+ --ui-_bg: var(--ui-tag-danger-bg, var(--ui-color-danger, oklch(60% 0.22 25deg)));
1394
+ --ui-_color: var(--ui-tag-danger-color, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
1306
1395
  }
1307
1396
  }
1308
1397
  @layer components.styles {
1309
- .ui-card {
1310
- border: var(--ui-_border-width) solid var(--ui-_border-color);
1311
- border-radius: var(--ui-_radius);
1398
+ .ui-tag {
1399
+ display: inline-flex;
1400
+ align-items: center;
1401
+ gap: var(--ui-_gap);
1402
+ block-size: var(--ui-_height);
1403
+ padding-inline: var(--ui-_padding-x);
1404
+ font-size: var(--ui-_font-size);
1405
+ font-weight: var(--ui-weight-medium, 500);
1406
+ line-height: 1;
1407
+ white-space: nowrap;
1408
+ color: var(--ui-_color);
1312
1409
  background: var(--ui-_bg);
1313
- padding: calc(var(--ui-_padding) - var(--ui-_border-width));
1314
- line-height: var(--ui-row-1);
1315
- }
1316
- }
1317
- @layer components.tokens {
1318
- .ui-checkbox {
1319
- --ui-_size: var(--ui-checkbox-size, calc(0.5rem * 2));
1320
- --ui-_radius: var(--ui-checkbox-radius, var(--ui-radius-sm, 0.25rem));
1321
- --ui-_bg: var(--ui-checkbox-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
1322
- --ui-_bg-checked: var(--ui-checkbox-bg-checked, var(--ui-color-primary, oklch(55% 0.22 250deg)));
1323
- --ui-_border-color: var(--ui-checkbox-border-color, var(--ui-color-border-strong, hsl(220, 10%, 80%)));
1324
- --ui-_border-color-focus: var(--ui-checkbox-border-color-focus, var(--ui-color-primary, oklch(55% 0.22 250deg)));
1325
- --ui-_check-color: var(--ui-checkbox-check-color, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
1326
- }
1327
- .ui-checkbox--lg {
1328
- --ui-_size: var(--ui-checkbox-size-lg, calc(0.5rem * 3));
1410
+ border-radius: var(--ui-_radius);
1329
1411
  }
1330
- .ui-checkbox--error {
1331
- --ui-_border-color: var(--ui-checkbox-error-border, var(--ui-color-danger, oklch(60% 0.22 25deg)));
1332
- --ui-_border-color-focus: var(--ui-checkbox-error-border, var(--ui-color-danger, oklch(60% 0.22 25deg)));
1412
+ .ui-tag:disabled, .ui-tag[aria-disabled=true] {
1413
+ opacity: 0.5;
1414
+ cursor: not-allowed;
1333
1415
  }
1334
- }
1335
- @layer components.styles {
1336
- .ui-checkbox {
1416
+ .ui-tag__remove {
1337
1417
  display: inline-flex;
1338
1418
  flex-shrink: 0;
1339
1419
  align-items: center;
1340
1420
  justify-content: center;
1341
- block-size: var(--ui-_size);
1342
- inline-size: var(--ui-_size);
1343
- margin: 0;
1344
- vertical-align: middle;
1345
- background: var(--ui-_bg);
1346
- border: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
1347
- border-radius: var(--ui-_radius);
1421
+ padding: 0;
1422
+ margin-inline-start: calc(var(--ui-_gap) * -0.5);
1423
+ color: currentcolor;
1424
+ background: none;
1425
+ border: none;
1426
+ opacity: 0.7;
1348
1427
  cursor: pointer;
1349
- appearance: none;
1350
- transition: background-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), border-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), box-shadow var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
1351
1428
  }
1352
- .ui-checkbox::before {
1353
- content: "";
1354
- block-size: 65%;
1355
- inline-size: 65%;
1356
- background-color: var(--ui-_check-color);
1357
- opacity: 0;
1358
- clip-path: polygon(20% 55%, 40% 75%, 80% 25%, 85% 30%, 40% 85%, 15% 60%);
1359
- transition: opacity var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
1429
+ .ui-tag__remove:hover {
1430
+ opacity: 1;
1360
1431
  }
1361
- .ui-checkbox:hover:not(:disabled) {
1362
- border-color: var(--ui-_border-color-focus);
1432
+ .ui-tag-group {
1433
+ display: flex;
1434
+ flex-wrap: wrap;
1435
+ gap: calc(0.5rem * 0.5);
1363
1436
  }
1364
- .ui-checkbox:focus-visible {
1365
- border-color: var(--ui-_border-color-focus);
1366
- outline: none;
1367
- box-shadow: 0 0 0 var(--ui-border-width-md, 0.125rem) var(--ui-color-focus, oklch(75% 0.15 250deg));
1437
+ }
1438
+ @layer components.tokens {
1439
+ .ui-accordion {
1440
+ --ui-_border-color: var(--ui-accordion-border-color, var(--ui-color-border, rgb(0 0 0 / 0.1)));
1441
+ --ui-_border-width: var(--ui-accordion-border-width, 1px);
1442
+ --ui-_radius: var(--ui-accordion-radius, var(--ui-radius-md, calc(0.5rem * 1)));
1368
1443
  }
1369
- .ui-checkbox:checked {
1370
- background: var(--ui-_bg-checked);
1371
- border-color: var(--ui-_bg-checked);
1444
+ }
1445
+ @layer components.styles {
1446
+ .ui-accordion {
1447
+ border-radius: var(--ui-_radius);
1448
+ outline: var(--ui-_border-width) solid var(--ui-_border-color);
1449
+ outline-offset: calc(var(--ui-_border-width) * -1);
1372
1450
  }
1373
- .ui-checkbox:checked::before {
1374
- opacity: 1;
1451
+ .ui-accordion > .ui-disclosure {
1452
+ --ui-_border-width: 0;
1453
+ border: none;
1454
+ border-radius: 0;
1375
1455
  }
1376
- .ui-checkbox:indeterminate {
1377
- background: var(--ui-_bg-checked);
1378
- border-color: var(--ui-_bg-checked);
1456
+ .ui-accordion > .ui-disclosure + .ui-disclosure {
1457
+ border-block-start: 1px solid var(--ui-_border-color);
1379
1458
  }
1380
- .ui-checkbox:indeterminate::before {
1381
- opacity: 1;
1382
- clip-path: polygon(15% 45%, 85% 45%, 85% 55%, 15% 55%);
1459
+ .ui-accordion > .ui-disclosure:first-child .ui-disclosure__trigger {
1460
+ border-start-start-radius: var(--ui-_radius);
1461
+ border-start-end-radius: var(--ui-_radius);
1383
1462
  }
1384
- .ui-checkbox:disabled {
1385
- opacity: 0.5;
1386
- cursor: not-allowed;
1463
+ .ui-accordion > .ui-disclosure:last-child .ui-disclosure__trigger {
1464
+ border-end-start-radius: var(--ui-_radius);
1465
+ border-end-end-radius: var(--ui-_radius);
1387
1466
  }
1388
- }
1389
- @layer components.tokens {
1390
- .ui-code {
1391
- --ui-_font-size: var(--ui-code-font-size, var(--ui-font-size-sm, 0.875rem));
1392
- --ui-_bg: var(--ui-code-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
1393
- --ui-_padding-x: var(--ui-code-padding-x, var(--ui-space-1, 0.5rem));
1394
- --ui-_padding-y: var(--ui-code-padding-y, var(--ui-space-0, 0.25rem));
1395
- --ui-_radius: var(--ui-code-radius, var(--ui-radius-sm, 0.25rem));
1467
+ .ui-accordion > .ui-disclosure:last-child .ui-disclosure__content {
1468
+ border-end-start-radius: var(--ui-_radius);
1469
+ border-end-end-radius: var(--ui-_radius);
1396
1470
  }
1397
- .ui-code--sm {
1398
- --ui-_font-size: var(--ui-font-size-xs, 0.75rem);
1471
+ .ui-accordion--borderless {
1472
+ border: none;
1399
1473
  }
1400
- .ui-code-block {
1401
- --ui-_font-size: var(--ui-code-font-size-block, var(--ui-font-size-sm, 0.875rem));
1402
- --ui-_bg: var(--ui-code-bg-block, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
1403
- --ui-_padding: var(--ui-code-padding-block, var(--ui-space-3, 1.5rem));
1404
- --ui-_radius: var(--ui-code-radius-block, var(--ui-radius-md, 0.5rem));
1405
- --ui-_border-color: var(--ui-code-border-color-block, var(--ui-color-border, hsl(220, 10%, 90%)));
1474
+ .ui-accordion--borderless > .ui-disclosure + .ui-disclosure {
1475
+ border-block-start: none;
1406
1476
  }
1407
- }
1408
- @layer components.styles {
1409
- .ui-code {
1410
- padding: var(--ui-_padding-y) var(--ui-_padding-x);
1411
- font-family: var(--ui-font-mono, Noto Sans Mono, ui-monospace, Cascadia Code, monospace);
1412
- font-size: var(--ui-_font-size);
1413
- line-height: var(--ui-leading-tight-sm, 1rem);
1414
- background: var(--ui-_bg);
1415
- border-radius: var(--ui-_radius);
1477
+ .ui-accordion--separated {
1478
+ display: flex;
1479
+ flex-direction: column;
1480
+ gap: calc(0.5rem * 1);
1481
+ border: none;
1416
1482
  }
1417
- .ui-code-block {
1418
- display: block;
1419
- padding: calc(var(--ui-_padding) - var(--ui-border-width-sm, 0.0625rem));
1420
- overflow-x: auto;
1421
- font-family: var(--ui-font-mono, Noto Sans Mono, ui-monospace, Cascadia Code, monospace);
1422
- font-size: var(--ui-_font-size);
1423
- line-height: var(--ui-leading-tight-sm, 1rem);
1424
- white-space: pre;
1425
- background: var(--ui-_bg);
1426
- border: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
1483
+ .ui-accordion--separated > .ui-disclosure {
1484
+ border: 1px solid var(--ui-_border-color);
1427
1485
  border-radius: var(--ui-_radius);
1428
1486
  }
1429
- .ui-code-block code {
1430
- padding: 0;
1431
- font-size: inherit;
1432
- background: none;
1487
+ .ui-accordion--separated > .ui-disclosure + .ui-disclosure {
1488
+ border-block-start: 1px solid var(--ui-_border-color);
1433
1489
  }
1434
1490
  }
1435
1491
  @layer components.tokens {
1436
- .ui-data-list {
1437
- --ui-_gap: var(--ui-data-list-gap, calc(0.5rem * 2));
1438
- --ui-_item-gap: var(--ui-data-list-item-gap, calc(0.5rem * 1));
1439
- --ui-_label-color: var(--ui-data-list-label-color, var(--ui-color-text-muted, hsl(220, 10%, 45%)));
1440
- --ui-_value-color: var(--ui-data-list-value-color, var(--ui-color-text, hsl(220, 10%, 10%)));
1492
+ .ui-disclosure {
1493
+ --ui-_border-color: var(--ui-disclosure-border-color, var(--ui-color-border, rgb(0 0 0 / 0.1)));
1494
+ --ui-_border-width: var(--ui-disclosure-border-width, 1px);
1495
+ --ui-_radius: var(--ui-disclosure-radius, var(--ui-radius-md, calc(0.5rem * 1)));
1496
+ --ui-_trigger-height: var(--ui-disclosure-trigger-height, var(--ui-row-3, calc(1rem * 3)));
1497
+ --ui-_padding-x: var(--ui-disclosure-padding-x, calc(0.5rem * 2));
1498
+ --ui-_padding-y: var(--ui-disclosure-padding-y, calc(0.5rem * 2));
1441
1499
  }
1442
1500
  }
1443
1501
  @layer components.styles {
1444
- .ui-data-list {
1445
- display: flex;
1446
- flex-direction: column;
1447
- gap: var(--ui-_gap);
1448
- margin: 0;
1449
- line-height: var(--ui-row-1, 1rem);
1502
+ .ui-disclosure {
1503
+ box-sizing: border-box;
1504
+ border-radius: var(--ui-_radius);
1505
+ outline: var(--ui-_border-width) solid var(--ui-_border-color);
1506
+ outline-offset: calc(var(--ui-_border-width) * -1);
1450
1507
  }
1451
- .ui-data-list__item {
1452
- display: flex;
1453
- flex-direction: column;
1454
- gap: var(--ui-_item-gap);
1508
+ .ui-disclosure:not([open]) {
1509
+ block-size: var(--ui-_trigger-height);
1455
1510
  }
1456
- .ui-data-list__label {
1457
- font-size: var(--ui-font-size-sm, 0.875rem);
1511
+ .ui-disclosure__trigger {
1512
+ display: flex;
1513
+ align-items: center;
1514
+ justify-content: space-between;
1515
+ gap: calc(0.5rem * 2);
1516
+ block-size: var(--ui-_trigger-height);
1517
+ inline-size: 100%;
1518
+ padding-inline: var(--ui-_padding-x);
1458
1519
  font-weight: var(--ui-weight-medium, 500);
1459
- line-height: var(--ui-row-1, 1rem);
1460
- color: var(--ui-_label-color);
1520
+ line-height: 1;
1521
+ text-align: start;
1522
+ cursor: pointer;
1523
+ list-style: none;
1461
1524
  }
1462
- .ui-data-list__value {
1463
- margin: 0;
1464
- line-height: var(--ui-row-1, 1rem);
1465
- color: var(--ui-_value-color);
1525
+ .ui-disclosure__trigger::-webkit-details-marker {
1526
+ display: none;
1466
1527
  }
1467
- .ui-data-list--horizontal .ui-data-list__item {
1468
- flex-direction: row;
1469
- align-items: baseline;
1470
- justify-content: space-between;
1471
- gap: calc(0.5rem * 2);
1528
+ .ui-disclosure__trigger::marker {
1529
+ display: none;
1472
1530
  }
1473
- .ui-data-list--horizontal .ui-data-list__label {
1531
+ .ui-disclosure__trigger:hover {
1532
+ background: var(--ui-color-bg-subtle, rgba(0, 0, 0, 0.02));
1533
+ }
1534
+ .ui-disclosure__icon {
1474
1535
  flex-shrink: 0;
1475
- }
1476
- .ui-data-list--horizontal .ui-data-list__value {
1477
- text-align: end;
1478
- }
1479
- .ui-data-list--divided .ui-data-list__item {
1480
- padding-block-end: calc(var(--ui-_gap) - var(--ui-border-width-sm, 0.0625rem));
1481
- border-block-end: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-color-border, hsl(220, 10%, 90%));
1482
- }
1483
- .ui-data-list--divided .ui-data-list__item:last-child {
1484
- padding-block-end: 0;
1485
- border-block-end: none;
1486
- }
1487
- .ui-data-list--striped .ui-data-list__item:nth-child(odd) {
1488
- padding: calc(0.5rem * 1);
1489
- background: var(--ui-color-bg-subtle, hsl(220, 10%, 96%));
1490
- border-radius: var(--ui-radius-sm, 0.25rem);
1491
- }
1492
- .ui-data-list--sm {
1493
- --ui-_gap: calc(0.5rem * 1);
1494
- --ui-_item-gap: 0;
1495
- font-size: var(--ui-font-size-sm, 0.875rem);
1496
- }
1497
- .ui-data-list--lg {
1498
- --ui-_gap: calc(0.5rem * 3);
1499
- --ui-_item-gap: calc(0.5rem * 1);
1500
- font-size: var(--ui-font-size-lg, 1.25rem);
1501
- }
1502
- }
1503
- @layer components.tokens {
1504
- .ui-dialog {
1505
- --ui-_header-padding: var(--ui-dialog-header-padding, calc(0.5rem * 2) calc(0.5rem * 3));
1506
- --ui-_body-padding: var(--ui-dialog-body-padding, calc(0.5rem * 3));
1507
- --ui-_footer-padding: var(--ui-dialog-footer-padding, calc(0.5rem * 2) calc(0.5rem * 3));
1508
- --ui-_border-color: var(--ui-dialog-border-color, var(--ui-color-border, rgb(0 0 0 / 0.1)));
1509
- }
1510
- }
1511
- @layer components.styles {
1512
- .ui-dialog .ui-modal__content {
1513
- padding: 0;
1514
- }
1515
- .ui-dialog__header {
1516
- display: flex;
1517
- flex-shrink: 0;
1518
- align-items: center;
1519
- justify-content: space-between;
1520
- gap: calc(0.5rem * 2);
1521
- padding: var(--ui-_header-padding);
1522
- border-block-end: 1px solid var(--ui-_border-color);
1523
- }
1524
- .ui-dialog__title {
1525
- margin: 0;
1526
- font-size: var(--ui-font-size-lg, 1.25rem);
1527
- font-weight: var(--ui-weight-semibold, 600);
1528
- line-height: calc(0.5rem * 3);
1529
- }
1530
- .ui-dialog__close {
1531
- flex-shrink: 0;
1532
- margin-inline-start: auto;
1533
- }
1534
- .ui-dialog__body {
1535
- flex: 1 1 auto;
1536
- padding: var(--ui-_body-padding);
1537
- overflow-y: auto;
1538
- }
1539
- .ui-dialog__footer {
1540
- display: flex;
1541
- flex-shrink: 0;
1542
- align-items: center;
1543
- justify-content: flex-end;
1544
- gap: calc(0.5rem * 1.5);
1545
- padding: var(--ui-_footer-padding);
1546
- border-block-start: 1px solid var(--ui-_border-color);
1547
- }
1548
- .ui-dialog--borderless .ui-dialog__header {
1549
- border-block-end: none;
1550
- }
1551
- .ui-dialog--borderless .ui-dialog__footer {
1552
- border-block-start: none;
1553
- }
1554
- }
1555
- @layer components.tokens {
1556
- .ui-disclosure {
1557
- --ui-_border-color: var(--ui-disclosure-border-color, var(--ui-color-border, rgb(0 0 0 / 0.1)));
1558
- --ui-_border-width: var(--ui-disclosure-border-width, 1px);
1559
- --ui-_radius: var(--ui-disclosure-radius, var(--ui-radius-md, calc(0.5rem * 1)));
1560
- --ui-_trigger-height: var(--ui-disclosure-trigger-height, var(--ui-row-3, calc(1rem * 3)));
1561
- --ui-_padding-x: var(--ui-disclosure-padding-x, calc(0.5rem * 2));
1562
- --ui-_padding-y: var(--ui-disclosure-padding-y, calc(0.5rem * 2));
1563
- }
1564
- }
1565
- @layer components.styles {
1566
- .ui-disclosure {
1567
- box-sizing: border-box;
1568
- border-radius: var(--ui-_radius);
1569
- outline: var(--ui-_border-width) solid var(--ui-_border-color);
1570
- outline-offset: calc(var(--ui-_border-width) * -1);
1571
- }
1572
- .ui-disclosure:not([open]) {
1573
- block-size: var(--ui-_trigger-height);
1574
- }
1575
- .ui-disclosure__trigger {
1576
- display: flex;
1577
- align-items: center;
1578
- justify-content: space-between;
1579
- gap: calc(0.5rem * 2);
1580
- block-size: var(--ui-_trigger-height);
1581
- inline-size: 100%;
1582
- padding-inline: var(--ui-_padding-x);
1583
- font-weight: var(--ui-weight-medium, 500);
1584
- line-height: 1;
1585
- text-align: start;
1586
- cursor: pointer;
1587
- list-style: none;
1588
- }
1589
- .ui-disclosure__trigger::-webkit-details-marker {
1590
- display: none;
1591
- }
1592
- .ui-disclosure__trigger::marker {
1593
- display: none;
1594
- }
1595
- .ui-disclosure__trigger:hover {
1596
- background: var(--ui-color-bg-subtle, rgba(0, 0, 0, 0.02));
1597
- }
1598
- .ui-disclosure__icon {
1599
- flex-shrink: 0;
1600
- transition: transform var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
1536
+ transition: transform var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
1601
1537
  }
1602
1538
  .ui-disclosure[open] .ui-disclosure__icon {
1603
1539
  transform: rotate(180deg);
@@ -1631,259 +1567,451 @@
1631
1567
  }
1632
1568
  }
1633
1569
  @layer components.tokens {
1634
- .ui-divider {
1635
- --ui-_color: var(--ui-divider-color, var(--ui-color-border, rgb(0 0 0 / 0.1)));
1636
- --ui-_line-size: var(--ui-divider-line-size, 1px);
1637
- --ui-_height: var(--ui-divider-height, 0.5rem);
1638
- --ui-_gap: var(--ui-divider-gap, calc(0.5rem * 2));
1639
- }
1640
- }
1641
- @layer components.styles {
1642
- .ui-divider {
1643
- display: flex;
1644
- align-items: center;
1645
- block-size: var(--ui-_height);
1646
- margin: var(--ui-_gap) 0;
1647
- font-size: var(--ui-font-size-sm, 0.875rem);
1648
- line-height: 1;
1649
- color: var(--ui-color-text-muted);
1570
+ .ui-alert {
1571
+ --ui-_accent: var(--ui-alert-accent, var(--ui-color-border, hsl(220, 10%, 90%)));
1572
+ --ui-_padding: var(--ui-alert-padding, var(--ui-space-2, 1rem));
1573
+ --ui-_border-width: var(--ui-alert-border-width, var(--ui-border-width-sm, 0.0625rem));
1574
+ --ui-_gap: var(--ui-alert-gap, var(--ui-space-1, 0.5rem));
1575
+ --ui-_radius: var(--ui-alert-radius, var(--ui-radius-md, 0.5rem));
1576
+ --ui-_bg: color-mix(in oklch, var(--ui-_accent) 8%, white);
1577
+ --ui-_border-color: var(--ui-_accent);
1578
+ --ui-_color: var(--ui-alert-color, var(--ui-color-text, hsl(220, 10%, 10%)));
1579
+ --ui-_icon-color: var(--ui-_accent);
1650
1580
  }
1651
- .ui-divider::before,
1652
- .ui-divider::after {
1653
- content: "";
1654
- flex: 1;
1655
- block-size: var(--ui-_line-size);
1656
- background: var(--ui-_color);
1581
+ .ui-alert--info {
1582
+ --ui-_accent: var(--ui-color-primary, oklch(55% 0.22 250deg));
1657
1583
  }
1658
- .ui-divider:not(:empty) {
1659
- --ui-_height: var(--ui-row-1, 1rem);
1584
+ .ui-alert--success {
1585
+ --ui-_accent: var(--ui-color-success, oklch(60% 0.18 145deg));
1660
1586
  }
1661
- .ui-divider:not(:empty)::before {
1662
- margin-inline-end: calc(0.5rem * 2);
1587
+ .ui-alert--warning {
1588
+ --ui-_accent: var(--ui-color-warning, oklch(75% 0.18 70deg));
1663
1589
  }
1664
- .ui-divider:not(:empty)::after {
1665
- margin-inline-start: calc(0.5rem * 2);
1590
+ .ui-alert--danger {
1591
+ --ui-_accent: var(--ui-color-danger, oklch(60% 0.22 25deg));
1666
1592
  }
1667
- .ui-divider:empty::after {
1668
- display: none;
1593
+ }
1594
+ @layer components.styles {
1595
+ .ui-alert {
1596
+ display: flex;
1597
+ align-items: flex-start;
1598
+ gap: var(--ui-_gap);
1599
+ padding: calc(var(--ui-_padding) - var(--ui-_border-width));
1600
+ padding-inline: var(--ui-_padding);
1601
+ color: var(--ui-_color);
1602
+ background: var(--ui-_bg);
1603
+ border: var(--ui-_border-width) solid var(--ui-_border-color);
1604
+ border-radius: var(--ui-_radius);
1605
+ border-inline-start-width: calc(0.5rem * 0.5);
1669
1606
  }
1670
- .ui-divider--vertical {
1671
- flex-direction: column;
1672
- align-self: stretch;
1673
- margin: 0 var(--ui-_gap);
1674
- writing-mode: vertical-rl;
1607
+ .ui-alert__icon {
1608
+ flex-shrink: 0;
1609
+ color: var(--ui-_icon-color);
1675
1610
  }
1676
- .ui-divider--vertical::before,
1677
- .ui-divider--vertical::after {
1611
+ .ui-alert__content {
1678
1612
  flex: 1;
1679
- block-size: auto;
1680
- inline-size: var(--ui-_size);
1681
- }
1682
- .ui-divider--start::before {
1683
- display: none;
1684
- }
1685
- .ui-divider--start:not(:empty)::after {
1686
- margin-inline-start: calc(0.5rem * 2);
1613
+ min-inline-size: 0;
1687
1614
  }
1688
- .ui-divider--end::after {
1689
- display: none;
1615
+ .ui-alert__title {
1616
+ margin: 0;
1617
+ font-weight: var(--ui-weight-medium, 500);
1618
+ line-height: var(--ui-row-1, 1rem);
1690
1619
  }
1691
- .ui-divider--end:not(:empty)::before {
1692
- margin-inline-end: calc(0.5rem * 2);
1620
+ .ui-alert__description {
1621
+ margin: 0;
1622
+ margin-block-start: calc(0.5rem * 1);
1623
+ font-size: var(--ui-font-size-sm, 0.875rem);
1624
+ line-height: var(--ui-row-1, 1rem);
1625
+ color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
1693
1626
  }
1694
- .ui-divider--dashed::before,
1695
- .ui-divider--dashed::after {
1696
- background: repeating-linear-gradient(90deg, var(--ui-_color) 0, var(--ui-_color) calc(0.5rem / 2), transparent calc(0.5rem / 2), transparent 0.5rem);
1627
+ .ui-alert__close {
1628
+ flex-shrink: 0;
1629
+ align-self: flex-start;
1630
+ padding: 0;
1631
+ color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
1632
+ background: none;
1633
+ border: none;
1634
+ cursor: pointer;
1697
1635
  }
1698
- .ui-divider--vertical.ui-divider--dashed::before,
1699
- .ui-divider--vertical.ui-divider--dashed::after {
1700
- background: repeating-linear-gradient(180deg, var(--ui-_color) 0, var(--ui-_color) calc(0.5rem / 2), transparent calc(0.5rem / 2), transparent 0.5rem);
1636
+ .ui-alert__close:hover {
1637
+ color: var(--ui-color-text, hsl(220, 10%, 10%));
1701
1638
  }
1702
1639
  }
1703
1640
  @layer components.tokens {
1704
- .ui-drawer {
1705
- --ui-_size: var(--ui-drawer-size, calc(0.5rem * 40));
1706
- --ui-_max-size: var(--ui-drawer-max-size, 90%);
1707
- --ui-_bg: var(--ui-drawer-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
1708
- --ui-_shadow: var(--ui-drawer-shadow, var(--ui-shadow-lg));
1709
- --ui-_header-padding: var(--ui-drawer-header-padding, calc(0.5rem * 2) calc(0.5rem * 3));
1710
- --ui-_body-padding: var(--ui-drawer-body-padding, calc(0.5rem * 3));
1711
- --ui-_footer-padding: var(--ui-drawer-footer-padding, calc(0.5rem * 2) calc(0.5rem * 3));
1712
- --ui-_border-color: var(--ui-drawer-border-color, var(--ui-color-border, hsl(220, 10%, 90%)));
1641
+ .ui-progress {
1642
+ --ui-_height: var(--ui-progress-height, calc(0.5rem * 1));
1643
+ --ui-_bg: var(--ui-progress-bg, var(--ui-color-bg-subtle, rgb(0 0 0 / 0.1)));
1644
+ --ui-_fill: var(--ui-progress-fill, var(--ui-color-primary));
1645
+ --ui-_radius: var(--ui-progress-radius, var(--ui-radius-full, 9999px));
1713
1646
  }
1714
- .ui-drawer--sm {
1715
- --ui-_size: calc(0.5rem * 30);
1647
+ .ui-progress--sm {
1648
+ --ui-_height: calc(0.5rem * 1);
1716
1649
  }
1717
- .ui-drawer--lg {
1718
- --ui-_size: calc(0.5rem * 50);
1719
- }
1720
- .ui-drawer--full {
1721
- --ui-_size: 100%;
1722
- --ui-_max-size: 100%;
1650
+ .ui-progress--lg {
1651
+ --ui-_height: calc(0.5rem * 2);
1723
1652
  }
1724
1653
  }
1725
1654
  @layer components.styles {
1726
- .ui-drawer-overlay {
1727
- position: fixed;
1728
- inset: 0;
1729
- z-index: var(--ui-z-drawer, 900);
1730
- background: var(--ui-overlay-bg, rgba(0, 0, 0, 0.5));
1655
+ .ui-progress {
1656
+ position: relative;
1657
+ block-size: var(--ui-_height);
1658
+ overflow: hidden;
1659
+ background: var(--ui-_bg);
1660
+ border-radius: var(--ui-_radius);
1731
1661
  }
1732
- .ui-drawer-overlay[data-state=open] {
1733
- animation: drawer-overlay-in var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
1662
+ .ui-progress__bar {
1663
+ block-size: 100%;
1664
+ background: var(--ui-_fill);
1665
+ border-radius: var(--ui-_radius);
1666
+ transition: inline-size var(--ui-duration-normal, 200ms) var(--ui-ease-default, ease);
1734
1667
  }
1735
- .ui-drawer-overlay[data-state=closed] {
1736
- animation: drawer-overlay-out var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
1668
+ .ui-progress--indeterminate .ui-progress__bar {
1669
+ inline-size: 30%;
1670
+ animation: progress-indeterminate 1.5s infinite ease-in-out;
1737
1671
  }
1738
- @keyframes drawer-overlay-in {
1739
- from {
1740
- opacity: 0;
1672
+ @keyframes progress-indeterminate {
1673
+ 0% {
1674
+ transform: translateX(-100%);
1675
+ }
1676
+ 100% {
1677
+ transform: translateX(400%);
1741
1678
  }
1742
1679
  }
1743
- @keyframes drawer-overlay-out {
1680
+ .ui-progress--striped .ui-progress__bar {
1681
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
1682
+ background-size: 0.5rem 0.5rem;
1683
+ }
1684
+ .ui-progress--animated .ui-progress__bar {
1685
+ animation: progress-stripes 1s linear infinite;
1686
+ }
1687
+ @keyframes progress-stripes {
1688
+ from {
1689
+ background-position: 0.5rem 0;
1690
+ }
1744
1691
  to {
1745
- opacity: 0;
1692
+ background-position: 0 0;
1746
1693
  }
1747
1694
  }
1748
- .ui-drawer {
1749
- display: flex;
1750
- flex-direction: column;
1751
- position: fixed;
1752
- z-index: var(--ui-z-drawer, 900);
1753
- background: var(--ui-_bg);
1754
- box-shadow: var(--ui-_shadow);
1695
+ .ui-progress--success {
1696
+ --ui-_fill: var(--ui-color-success);
1755
1697
  }
1756
- .ui-drawer--end {
1757
- inset-block: 0;
1758
- inset-inline-end: 0;
1759
- inline-size: var(--ui-_size);
1760
- max-inline-size: var(--ui-_max-size);
1761
- box-shadow: calc(var(--ui-border-width-sm, 1px) * -1) 0 0 var(--ui-_border-color);
1698
+ .ui-progress--warning {
1699
+ --ui-_fill: var(--ui-color-warning);
1762
1700
  }
1763
- .ui-drawer--start {
1764
- inset-block: 0;
1765
- inset-inline-start: 0;
1766
- inline-size: var(--ui-_size);
1767
- max-inline-size: var(--ui-_max-size);
1768
- box-shadow: var(--ui-border-width-sm, 1px) 0 0 var(--ui-_border-color);
1701
+ .ui-progress--danger {
1702
+ --ui-_fill: var(--ui-color-danger);
1769
1703
  }
1770
- .ui-drawer--top {
1771
- inset-block-start: 0;
1772
- inset-inline: 0;
1773
- block-size: var(--ui-_size);
1774
- max-block-size: var(--ui-_max-size);
1775
- box-shadow: 0 var(--ui-border-width-sm, 1px) 0 var(--ui-_border-color);
1704
+ }
1705
+ @layer components.tokens {
1706
+ .ui-skeleton {
1707
+ --ui-_bg: var(--ui-skeleton-bg, var(--ui-color-bg-subtle, rgb(0 0 0 / 0.1)));
1708
+ --ui-_shimmer: var(--ui-skeleton-shimmer, rgb(255 255 255 / 0.5));
1709
+ --ui-_radius: var(--ui-skeleton-radius, var(--ui-radius-sm, calc(0.5rem / 2)));
1776
1710
  }
1777
- .ui-drawer--bottom {
1778
- inset-block-end: 0;
1779
- inset-inline: 0;
1780
- block-size: var(--ui-_size);
1781
- max-block-size: var(--ui-_max-size);
1782
- box-shadow: 0 calc(var(--ui-border-width-sm, 1px) * -1) 0 var(--ui-_border-color);
1711
+ }
1712
+ @layer components.styles {
1713
+ .ui-skeleton {
1714
+ display: block;
1715
+ position: relative;
1716
+ overflow: hidden;
1717
+ background: var(--ui-_bg);
1718
+ border-radius: var(--ui-_radius);
1783
1719
  }
1784
- .ui-drawer--end[data-state=open] {
1785
- animation: drawer-slide-in-end var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
1720
+ .ui-skeleton::after {
1721
+ content: "";
1722
+ position: absolute;
1723
+ inset: 0;
1724
+ background: linear-gradient(90deg, transparent 0%, var(--ui-_shimmer) 50%, transparent 100%);
1725
+ animation: skeleton-shimmer 1.5s infinite;
1726
+ transform: translateX(-100%);
1786
1727
  }
1787
- .ui-drawer--end[data-state=closed] {
1788
- animation: drawer-slide-out-end var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
1728
+ @keyframes skeleton-shimmer {
1729
+ 100% {
1730
+ transform: translateX(100%);
1731
+ }
1789
1732
  }
1790
- .ui-drawer--start[data-state=open] {
1791
- animation: drawer-slide-in-start var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
1733
+ .ui-skeleton--text {
1734
+ block-size: calc(0.5rem * 2);
1735
+ inline-size: 100%;
1792
1736
  }
1793
- .ui-drawer--start[data-state=closed] {
1794
- animation: drawer-slide-out-start var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
1737
+ .ui-skeleton--heading {
1738
+ block-size: calc(0.5rem * 3);
1739
+ inline-size: 60%;
1795
1740
  }
1796
- .ui-drawer--top[data-state=open] {
1797
- animation: drawer-slide-in-top var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
1741
+ .ui-skeleton--circle {
1742
+ block-size: calc(0.5rem * 5);
1743
+ inline-size: calc(0.5rem * 5);
1744
+ border-radius: 50%;
1798
1745
  }
1799
- .ui-drawer--top[data-state=closed] {
1800
- animation: drawer-slide-out-top var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
1746
+ .ui-skeleton--rect {
1747
+ block-size: calc(0.5rem * 20);
1748
+ inline-size: 100%;
1801
1749
  }
1802
- .ui-drawer--bottom[data-state=open] {
1803
- animation: drawer-slide-in-bottom var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
1750
+ .ui-skeleton--static::after {
1751
+ animation: none;
1804
1752
  }
1805
- .ui-drawer--bottom[data-state=closed] {
1806
- animation: drawer-slide-out-bottom var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
1753
+ .ui-skeleton--pulse {
1754
+ animation: skeleton-pulse 1.5s infinite ease-in-out;
1807
1755
  }
1808
- @keyframes drawer-slide-in-end {
1809
- from {
1810
- transform: translateX(100%);
1811
- }
1756
+ .ui-skeleton--pulse::after {
1757
+ display: none;
1812
1758
  }
1813
- @keyframes drawer-slide-out-end {
1814
- to {
1815
- transform: translateX(100%);
1759
+ @keyframes skeleton-pulse {
1760
+ 0%, 100% {
1761
+ opacity: 1;
1816
1762
  }
1817
- }
1818
- @keyframes drawer-slide-in-start {
1819
- from {
1820
- transform: translateX(-100%);
1763
+ 50% {
1764
+ opacity: 0.5;
1821
1765
  }
1822
1766
  }
1823
- @keyframes drawer-slide-out-start {
1824
- to {
1825
- transform: translateX(-100%);
1826
- }
1767
+ }
1768
+ @layer components.tokens {
1769
+ .ui-spinner {
1770
+ --ui-_size: var(--ui-spinner-size, calc(var(--ui-unit) * 4));
1771
+ --ui-_border-width: var(--ui-spinner-border-width, var(--ui-border-width-md));
1772
+ --ui-_color: var(--ui-spinner-color, currentcolor);
1773
+ --ui-_track-color: var(--ui-spinner-track-color, transparent);
1774
+ --ui-_duration: var(--ui-spinner-duration, 750ms);
1827
1775
  }
1828
- @keyframes drawer-slide-in-top {
1829
- from {
1830
- transform: translateY(-100%);
1831
- }
1776
+ .ui-spinner--xs {
1777
+ --ui-_size: var(--ui-spinner-size-xs, calc(var(--ui-unit) * 2));
1778
+ --ui-_border-width: var(--ui-spinner-border-width-xs, var(--ui-border-width-sm));
1832
1779
  }
1833
- @keyframes drawer-slide-out-top {
1834
- to {
1835
- transform: translateY(-100%);
1836
- }
1780
+ .ui-spinner--sm {
1781
+ --ui-_size: var(--ui-spinner-size-sm, calc(var(--ui-unit) * 3));
1782
+ --ui-_border-width: var(--ui-spinner-border-width-sm, var(--ui-border-width-md));
1837
1783
  }
1838
- @keyframes drawer-slide-in-bottom {
1839
- from {
1840
- transform: translateY(100%);
1841
- }
1784
+ .ui-spinner--lg {
1785
+ --ui-_size: var(--ui-spinner-size-lg, calc(var(--ui-unit) * 5));
1786
+ --ui-_border-width: var(--ui-spinner-border-width-lg, var(--ui-border-width-md));
1842
1787
  }
1843
- @keyframes drawer-slide-out-bottom {
1844
- to {
1845
- transform: translateY(100%);
1846
- }
1788
+ .ui-spinner--xl {
1789
+ --ui-_size: var(--ui-spinner-size-xl, calc(var(--ui-unit) * 6));
1790
+ --ui-_border-width: var(--ui-spinner-border-width-xl, var(--ui-border-width-lg));
1847
1791
  }
1848
- .ui-drawer__header {
1849
- display: flex;
1792
+ }
1793
+ @layer components.styles {
1794
+ .ui-spinner {
1795
+ display: inline-block;
1850
1796
  flex-shrink: 0;
1851
- align-items: center;
1852
- justify-content: space-between;
1853
- gap: calc(0.5rem * 2);
1854
- padding: var(--ui-_header-padding);
1855
- box-shadow: inset 0 calc(var(--ui-border-width-sm, 1px) * -1) 0 var(--ui-_border-color);
1797
+ box-sizing: border-box;
1798
+ block-size: var(--ui-_size);
1799
+ inline-size: var(--ui-_size);
1800
+ vertical-align: middle;
1801
+ border: var(--ui-_border-width) solid var(--ui-_track-color);
1802
+ border-radius: 50%;
1803
+ border-block-start-color: var(--ui-_color);
1804
+ animation: spinner-rotate var(--ui-_duration) linear infinite;
1856
1805
  }
1857
- .ui-drawer__title {
1858
- margin: 0;
1859
- font-size: var(--ui-font-size-lg, 1.25rem);
1860
- font-weight: var(--ui-weight-semibold, 600);
1861
- line-height: var(--ui-row-1, 1rem);
1806
+ @keyframes spinner-rotate {
1807
+ to {
1808
+ transform: rotate(360deg);
1809
+ }
1862
1810
  }
1863
- .ui-drawer__description {
1864
- margin: 0;
1865
- font-size: var(--ui-font-size-sm, 0.875rem);
1866
- line-height: var(--ui-row-1, 1rem);
1867
- color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
1811
+ }
1812
+ @layer components.tokens {
1813
+ .ui-toast-viewport {
1814
+ --ui-_gap: var(--ui-toast-viewport-gap, calc(0.5rem * 1));
1815
+ --ui-_padding: var(--ui-toast-viewport-padding, calc(0.5rem * 2));
1816
+ --ui-_max-width: var(--ui-toast-viewport-max-width, 420px);
1868
1817
  }
1869
- .ui-drawer__close {
1870
- flex-shrink: 0;
1871
- margin-inline-start: auto;
1818
+ .ui-toast {
1819
+ --ui-_padding: var(--ui-toast-padding, calc(0.5rem * 2));
1820
+ --ui-_gap: var(--ui-toast-gap, calc(0.5rem * 1));
1821
+ --ui-_radius: var(--ui-toast-radius, var(--ui-radius-md, 0.5rem));
1822
+ --ui-_bg: var(--ui-toast-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
1823
+ --ui-_border-color: var(--ui-toast-border-color, var(--ui-color-border, hsl(220, 10%, 90%)));
1824
+ --ui-_shadow: var(--ui-toast-shadow, var(--ui-shadow-lg));
1872
1825
  }
1873
- .ui-drawer__body {
1874
- flex: 1 1 auto;
1875
- padding: var(--ui-_body-padding);
1876
- overflow-y: auto;
1877
- line-height: var(--ui-row-1, 1rem);
1826
+ .ui-toast--success {
1827
+ --ui-_border-color: var(--ui-color-success);
1878
1828
  }
1879
- .ui-drawer__footer {
1829
+ .ui-toast--warning {
1830
+ --ui-_border-color: var(--ui-color-warning);
1831
+ }
1832
+ .ui-toast--danger {
1833
+ --ui-_border-color: var(--ui-color-danger);
1834
+ }
1835
+ .ui-toast--info {
1836
+ --ui-_border-color: var(--ui-color-primary);
1837
+ }
1838
+ }
1839
+ @layer components.styles {
1840
+ .ui-toast-viewport {
1841
+ display: flex;
1842
+ flex-direction: column;
1843
+ gap: var(--ui-_gap);
1844
+ position: fixed;
1845
+ z-index: var(--ui-z-toast, 1000);
1846
+ max-inline-size: var(--ui-_max-width);
1847
+ padding: var(--ui-_padding);
1848
+ pointer-events: none;
1849
+ list-style: none;
1850
+ }
1851
+ .ui-toast-viewport--top-end {
1852
+ inset-block-start: 0;
1853
+ inset-inline-end: 0;
1854
+ }
1855
+ .ui-toast-viewport--top-start {
1856
+ inset-block-start: 0;
1857
+ inset-inline-start: 0;
1858
+ }
1859
+ .ui-toast-viewport--bottom-end {
1860
+ inset-block-end: 0;
1861
+ inset-inline-end: 0;
1862
+ }
1863
+ .ui-toast-viewport--bottom-start {
1864
+ inset-block-end: 0;
1865
+ inset-inline-start: 0;
1866
+ }
1867
+ .ui-toast-viewport--top-center {
1868
+ inset-block-start: 0;
1869
+ inset-inline-start: 50%;
1870
+ transform: translateX(-50%);
1871
+ }
1872
+ .ui-toast-viewport--bottom-center {
1873
+ inset-block-end: 0;
1874
+ inset-inline-start: 50%;
1875
+ transform: translateX(-50%);
1876
+ }
1877
+ .ui-toast {
1880
1878
  display: flex;
1879
+ align-items: flex-start;
1880
+ gap: var(--ui-_gap);
1881
+ padding: var(--ui-_padding);
1882
+ background: var(--ui-_bg);
1883
+ border-radius: var(--ui-_radius);
1884
+ outline: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
1885
+ box-shadow: var(--ui-_shadow);
1886
+ pointer-events: auto;
1887
+ outline-offset: calc(var(--ui-border-width-sm, 0.0625rem) * -1);
1888
+ }
1889
+ .ui-toast__icon {
1890
+ flex-shrink: 0;
1891
+ }
1892
+ .ui-toast__content {
1893
+ flex: 1;
1894
+ min-inline-size: 0;
1895
+ }
1896
+ .ui-toast__title {
1897
+ margin: 0;
1898
+ font-weight: var(--ui-weight-medium, 500);
1899
+ line-height: var(--ui-row-1, 1rem);
1900
+ }
1901
+ .ui-toast__description {
1902
+ margin: 0;
1903
+ font-size: var(--ui-font-size-sm, 0.875rem);
1904
+ line-height: var(--ui-row-1, 1rem);
1905
+ color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
1906
+ }
1907
+ .ui-toast__action {
1908
+ flex-shrink: 0;
1909
+ }
1910
+ .ui-toast__close {
1911
+ display: inline-flex;
1881
1912
  flex-shrink: 0;
1882
1913
  align-items: center;
1883
- justify-content: flex-end;
1884
- gap: calc(0.5rem * 2);
1885
- padding: var(--ui-_footer-padding);
1886
- box-shadow: inset 0 var(--ui-border-width-sm, 1px) 0 var(--ui-_border-color);
1914
+ justify-content: center;
1915
+ block-size: var(--ui-row-1, 1rem);
1916
+ inline-size: var(--ui-row-1, 1rem);
1917
+ padding: 0;
1918
+ color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
1919
+ background: none;
1920
+ border: none;
1921
+ cursor: pointer;
1922
+ }
1923
+ .ui-toast__close:hover {
1924
+ color: var(--ui-color-text, hsl(220, 10%, 10%));
1925
+ }
1926
+ .ui-toast[data-state=open] {
1927
+ animation: toast-slide-in var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
1928
+ }
1929
+ .ui-toast[data-state=closed] {
1930
+ animation: toast-slide-out var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
1931
+ }
1932
+ @keyframes toast-slide-in {
1933
+ from {
1934
+ opacity: 0;
1935
+ transform: translateX(100%);
1936
+ }
1937
+ }
1938
+ @keyframes toast-slide-out {
1939
+ to {
1940
+ opacity: 0;
1941
+ transform: translateX(100%);
1942
+ }
1943
+ }
1944
+ }
1945
+ @layer components.tokens {
1946
+ .ui-checkbox {
1947
+ --ui-_size: var(--ui-checkbox-size, calc(0.5rem * 2));
1948
+ --ui-_radius: var(--ui-checkbox-radius, var(--ui-radius-sm, 0.25rem));
1949
+ --ui-_bg: var(--ui-checkbox-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
1950
+ --ui-_bg-checked: var(--ui-checkbox-bg-checked, var(--ui-color-primary, oklch(55% 0.22 250deg)));
1951
+ --ui-_border-color: var(--ui-checkbox-border-color, var(--ui-color-border-strong, hsl(220, 10%, 80%)));
1952
+ --ui-_border-color-focus: var(--ui-checkbox-border-color-focus, var(--ui-color-primary, oklch(55% 0.22 250deg)));
1953
+ --ui-_check-color: var(--ui-checkbox-check-color, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
1954
+ }
1955
+ .ui-checkbox--lg {
1956
+ --ui-_size: var(--ui-checkbox-size-lg, calc(0.5rem * 3));
1957
+ }
1958
+ .ui-checkbox--error {
1959
+ --ui-_border-color: var(--ui-checkbox-error-border, var(--ui-color-danger, oklch(60% 0.22 25deg)));
1960
+ --ui-_border-color-focus: var(--ui-checkbox-error-border, var(--ui-color-danger, oklch(60% 0.22 25deg)));
1961
+ }
1962
+ }
1963
+ @layer components.styles {
1964
+ .ui-checkbox {
1965
+ display: inline-flex;
1966
+ flex-shrink: 0;
1967
+ align-items: center;
1968
+ justify-content: center;
1969
+ block-size: var(--ui-_size);
1970
+ inline-size: var(--ui-_size);
1971
+ margin: 0;
1972
+ vertical-align: middle;
1973
+ background: var(--ui-_bg);
1974
+ border: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
1975
+ border-radius: var(--ui-_radius);
1976
+ cursor: pointer;
1977
+ appearance: none;
1978
+ transition: background-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), border-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), box-shadow var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
1979
+ }
1980
+ .ui-checkbox::before {
1981
+ content: "";
1982
+ block-size: 65%;
1983
+ inline-size: 65%;
1984
+ background-color: var(--ui-_check-color);
1985
+ opacity: 0;
1986
+ clip-path: polygon(20% 55%, 40% 75%, 80% 25%, 85% 30%, 40% 85%, 15% 60%);
1987
+ transition: opacity var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
1988
+ }
1989
+ .ui-checkbox:hover:not(:disabled) {
1990
+ border-color: var(--ui-_border-color-focus);
1991
+ }
1992
+ .ui-checkbox:focus-visible {
1993
+ border-color: var(--ui-_border-color-focus);
1994
+ outline: none;
1995
+ box-shadow: 0 0 0 var(--ui-border-width-md, 0.125rem) var(--ui-color-focus, oklch(75% 0.15 250deg));
1996
+ }
1997
+ .ui-checkbox:checked {
1998
+ background: var(--ui-_bg-checked);
1999
+ border-color: var(--ui-_bg-checked);
2000
+ }
2001
+ .ui-checkbox:checked::before {
2002
+ opacity: 1;
2003
+ }
2004
+ .ui-checkbox:indeterminate {
2005
+ background: var(--ui-_bg-checked);
2006
+ border-color: var(--ui-_bg-checked);
2007
+ }
2008
+ .ui-checkbox:indeterminate::before {
2009
+ opacity: 1;
2010
+ clip-path: polygon(15% 45%, 85% 45%, 85% 55%, 15% 55%);
2011
+ }
2012
+ .ui-checkbox:disabled {
2013
+ opacity: 0.5;
2014
+ cursor: not-allowed;
1887
2015
  }
1888
2016
  }
1889
2017
  @layer components.tokens {
@@ -1954,140 +2082,41 @@
1954
2082
  }
1955
2083
  }
1956
2084
  @layer components.tokens {
1957
- .ui-heading {
1958
- --ui-_font-size: var(--ui-heading-font-size, var(--ui-font-size-xl, 1.5rem));
1959
- --ui-_line-height: var(--ui-heading-line-height, var(--ui-leading-xl, 2rem));
1960
- --ui-_weight: var(--ui-heading-weight, var(--ui-weight-bold, 700));
1961
- --ui-_color: var(--ui-heading-color, var(--ui-color-text, hsl(220, 10%, 10%)));
1962
- }
1963
- .ui-heading--4xl {
1964
- --ui-_font-size: var(--ui-heading-font-size-4xl, var(--ui-font-size-4xl, 2.5rem));
1965
- --ui-_line-height: var(--ui-heading-line-height-4xl, var(--ui-leading-4xl, 3rem));
2085
+ .ui-input {
2086
+ --ui-_height: var(--ui-input-height, var(--ui-row-2, 2rem));
2087
+ --ui-_padding-x: var(--ui-input-padding-x, var(--ui-space-1, 0.5rem));
2088
+ --ui-_font-size: var(--ui-input-font-size, var(--ui-font-size-sm, 0.875rem));
2089
+ --ui-_radius: var(--ui-input-radius, var(--ui-radius-md, 0.5rem));
2090
+ --ui-_bg: var(--ui-input-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
2091
+ --ui-_border-color: var(--ui-input-border-color, var(--ui-color-border-strong, hsl(220, 10%, 80%)));
2092
+ --ui-_border-color-focus: var(--ui-input-border-color-focus, var(--ui-color-primary, oklch(55% 0.22 250deg)));
2093
+ --ui-_text: var(--ui-input-text, var(--ui-color-text, hsl(220, 10%, 10%)));
2094
+ --ui-_placeholder: var(--ui-input-placeholder, var(--ui-color-text-muted, hsl(220, 10%, 45%)));
1966
2095
  }
1967
- .ui-heading--3xl {
1968
- --ui-_font-size: var(--ui-heading-font-size-3xl, var(--ui-font-size-3xl, 2rem));
1969
- --ui-_line-height: var(--ui-heading-line-height-3xl, var(--ui-leading-3xl, 2.5rem));
2096
+ .ui-input--sm {
2097
+ --ui-_height: var(--ui-input-height-sm, calc(1rem * 1.5));
2098
+ --ui-_font-size: var(--ui-input-font-size-sm, var(--ui-font-size-xs, 0.75rem));
1970
2099
  }
1971
- .ui-heading--2xl {
1972
- --ui-_font-size: var(--ui-heading-font-size-2xl, var(--ui-font-size-2xl, 1.75rem));
1973
- --ui-_line-height: var(--ui-heading-line-height-2xl, var(--ui-leading-2xl, 2rem));
2100
+ .ui-input--lg {
2101
+ --ui-_height: var(--ui-input-height-lg, calc(1rem * 2.5));
2102
+ --ui-_padding-x: var(--ui-input-padding-x-lg, var(--ui-space-2, 1rem));
2103
+ --ui-_font-size: var(--ui-input-font-size-lg, var(--ui-font-size-md, 1rem));
1974
2104
  }
1975
- .ui-heading--xl {
1976
- --ui-_font-size: var(--ui-heading-font-size-xl, var(--ui-font-size-xl, 1.5rem));
1977
- --ui-_line-height: var(--ui-heading-line-height-xl, var(--ui-leading-xl, 2rem));
2105
+ .ui-input--filled {
2106
+ --ui-_bg: var(--ui-input-filled-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
2107
+ --ui-_border-color: transparent;
1978
2108
  }
1979
- .ui-heading--lg {
1980
- --ui-_font-size: var(--ui-heading-font-size-lg, var(--ui-font-size-lg, 1.25rem));
1981
- --ui-_line-height: var(--ui-heading-line-height-lg, var(--ui-leading-lg, 2rem));
2109
+ .ui-input--ghost {
2110
+ --ui-_bg: transparent;
2111
+ --ui-_border-color: transparent;
1982
2112
  }
1983
- .ui-heading--md {
1984
- --ui-_font-size: var(--ui-heading-font-size-md, var(--ui-font-size-md, 1rem));
1985
- --ui-_line-height: var(--ui-heading-line-height-md, var(--ui-leading-tight-md, 1.5rem));
2113
+ .ui-input--error {
2114
+ --ui-_border-color: var(--ui-input-error-border, var(--ui-color-danger, oklch(60% 0.22 25deg)));
2115
+ --ui-_border-color-focus: var(--ui-input-error-border, var(--ui-color-danger, oklch(60% 0.22 25deg)));
1986
2116
  }
1987
- .ui-heading--sm {
1988
- --ui-_font-size: var(--ui-heading-font-size-sm, var(--ui-font-size-sm, 0.875rem));
1989
- --ui-_line-height: var(--ui-heading-line-height-sm, var(--ui-leading-tight-sm, 1rem));
1990
- }
1991
- }
1992
- @layer components.styles {
1993
- .ui-heading {
1994
- margin: 0;
1995
- font-size: var(--ui-_font-size);
1996
- font-weight: var(--ui-_weight);
1997
- line-height: var(--ui-_line-height);
1998
- color: var(--ui-_color);
1999
- }
2000
- }
2001
- @layer components.tokens {
2002
- .ui-icon {
2003
- --ui-_size: var(--ui-icon-size, var(--ui-ctx-size, 1rem));
2004
- --ui-_stroke: var(--ui-icon-stroke, 2);
2005
- }
2006
- .ui-icon--xs {
2007
- --ui-_size: var(--ui-icon-size-xs, var(--ui-size-xs, 0.5rem));
2008
- }
2009
- .ui-icon--sm {
2010
- --ui-_size: var(--ui-icon-size-sm, var(--ui-size-sm, 0.75rem));
2011
- }
2012
- .ui-icon--md {
2013
- --ui-_size: var(--ui-icon-size-md, var(--ui-size-md, 1rem));
2014
- }
2015
- .ui-icon--lg {
2016
- --ui-_size: var(--ui-icon-size-lg, var(--ui-size-lg, 1.25rem));
2017
- }
2018
- .ui-icon--xl {
2019
- --ui-_size: var(--ui-icon-size-xl, var(--ui-size-xl, 1.5rem));
2020
- }
2021
- .ui-icon--stroke-thin {
2022
- --ui-_stroke: var(--ui-icon-stroke-thin, 1);
2023
- }
2024
- .ui-icon--stroke-thick {
2025
- --ui-_stroke: var(--ui-icon-stroke-thick, 2.5);
2026
- }
2027
- }
2028
- @layer components.styles {
2029
- .ui-icon {
2030
- display: inline-block;
2031
- flex-shrink: 0;
2032
- block-size: var(--ui-_size);
2033
- inline-size: var(--ui-_size);
2034
- vertical-align: middle;
2035
- color: currentcolor;
2036
- fill: none;
2037
- stroke: currentcolor;
2038
- stroke-width: var(--ui-_stroke);
2039
- stroke-linecap: round;
2040
- stroke-linejoin: round;
2041
- }
2042
- .ui-icon--filled {
2043
- fill: currentcolor;
2044
- stroke: none;
2045
- }
2046
- .ui-icon--spin {
2047
- animation: icon-spin 1s linear infinite;
2048
- }
2049
- @keyframes icon-spin {
2050
- to {
2051
- transform: rotate(360deg);
2052
- }
2053
- }
2054
- }
2055
- @layer components.tokens {
2056
- .ui-input {
2057
- --ui-_height: var(--ui-input-height, var(--ui-row-2, 2rem));
2058
- --ui-_padding-x: var(--ui-input-padding-x, var(--ui-space-1, 0.5rem));
2059
- --ui-_font-size: var(--ui-input-font-size, var(--ui-font-size-sm, 0.875rem));
2060
- --ui-_radius: var(--ui-input-radius, var(--ui-radius-md, 0.5rem));
2061
- --ui-_bg: var(--ui-input-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
2062
- --ui-_border-color: var(--ui-input-border-color, var(--ui-color-border-strong, hsl(220, 10%, 80%)));
2063
- --ui-_border-color-focus: var(--ui-input-border-color-focus, var(--ui-color-primary, oklch(55% 0.22 250deg)));
2064
- --ui-_text: var(--ui-input-text, var(--ui-color-text, hsl(220, 10%, 10%)));
2065
- --ui-_placeholder: var(--ui-input-placeholder, var(--ui-color-text-muted, hsl(220, 10%, 45%)));
2066
- }
2067
- .ui-input--sm {
2068
- --ui-_height: var(--ui-input-height-sm, calc(1rem * 1.5));
2069
- --ui-_font-size: var(--ui-input-font-size-sm, var(--ui-font-size-xs, 0.75rem));
2070
- }
2071
- .ui-input--lg {
2072
- --ui-_height: var(--ui-input-height-lg, calc(1rem * 2.5));
2073
- --ui-_padding-x: var(--ui-input-padding-x-lg, var(--ui-space-2, 1rem));
2074
- --ui-_font-size: var(--ui-input-font-size-lg, var(--ui-font-size-md, 1rem));
2075
- }
2076
- .ui-input--filled {
2077
- --ui-_bg: var(--ui-input-filled-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
2078
- --ui-_border-color: transparent;
2079
- }
2080
- .ui-input--ghost {
2081
- --ui-_bg: transparent;
2082
- --ui-_border-color: transparent;
2083
- }
2084
- .ui-input--error {
2085
- --ui-_border-color: var(--ui-input-error-border, var(--ui-color-danger, oklch(60% 0.22 25deg)));
2086
- --ui-_border-color-focus: var(--ui-input-error-border, var(--ui-color-danger, oklch(60% 0.22 25deg)));
2087
- }
2088
- .ui-input--success {
2089
- --ui-_border-color: var(--ui-input-success-border, var(--ui-color-success, oklch(60% 0.18 145deg)));
2090
- --ui-_border-color-focus: var(--ui-input-success-border, var(--ui-color-success, oklch(60% 0.18 145deg)));
2117
+ .ui-input--success {
2118
+ --ui-_border-color: var(--ui-input-success-border, var(--ui-color-success, oklch(60% 0.18 145deg)));
2119
+ --ui-_border-color-focus: var(--ui-input-success-border, var(--ui-color-success, oklch(60% 0.18 145deg)));
2091
2120
  }
2092
2121
  }
2093
2122
  @layer components.styles {
@@ -2195,938 +2224,723 @@
2195
2224
  }
2196
2225
  }
2197
2226
  @layer components.tokens {
2198
- .ui-link {
2199
- --ui-_color: var(--ui-link-color, var(--ui-color-primary));
2200
- --ui-_color-hover: var(--ui-link-color-hover, var(--ui-color-primary-hover, color-mix(in srgb, var(--ui-_color) 85%, black)));
2201
- --ui-_color-visited: var(--ui-link-color-visited, var(--ui-_color));
2202
- --ui-_decoration: var(--ui-link-decoration, underline);
2203
- --ui-_decoration-hover: var(--ui-link-decoration-hover, underline);
2227
+ .ui-radio {
2228
+ --ui-_size: var(--ui-radio-size, calc(0.5rem * 2));
2229
+ --ui-_bg: var(--ui-radio-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
2230
+ --ui-_bg-checked: var(--ui-radio-bg-checked, var(--ui-color-primary, oklch(55% 0.22 250deg)));
2231
+ --ui-_border-color: var(--ui-radio-border-color, var(--ui-color-border-strong, hsl(220, 10%, 80%)));
2232
+ --ui-_border-color-focus: var(--ui-radio-border-color-focus, var(--ui-color-primary, oklch(55% 0.22 250deg)));
2233
+ --ui-_dot-color: var(--ui-radio-dot-color, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
2204
2234
  }
2205
- .ui-link--muted {
2206
- --ui-_color: var(--ui-link-color-muted, var(--ui-color-text-muted));
2207
- --ui-_color-hover: var(--ui-link-color-muted-hover, var(--ui-color-text));
2235
+ .ui-radio--lg {
2236
+ --ui-_size: var(--ui-radio-size-lg, calc(0.5rem * 3));
2208
2237
  }
2209
- .ui-link--subtle {
2210
- --ui-_decoration: none;
2211
- --ui-_decoration-hover: underline;
2238
+ .ui-radio--error {
2239
+ --ui-_border-color: var(--ui-radio-error-border, var(--ui-color-danger, oklch(60% 0.22 25deg)));
2240
+ --ui-_border-color-focus: var(--ui-radio-error-border, var(--ui-color-danger, oklch(60% 0.22 25deg)));
2212
2241
  }
2213
2242
  }
2214
2243
  @layer components.styles {
2215
- .ui-link {
2216
- text-decoration: var(--ui-_decoration);
2217
- color: var(--ui-_color);
2244
+ .ui-radio {
2245
+ display: inline-flex;
2246
+ flex-shrink: 0;
2247
+ align-items: center;
2248
+ justify-content: center;
2249
+ block-size: var(--ui-_size);
2250
+ inline-size: var(--ui-_size);
2251
+ margin: 0;
2252
+ vertical-align: middle;
2253
+ background: var(--ui-_bg);
2254
+ border: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
2255
+ border-radius: 50%;
2218
2256
  cursor: pointer;
2219
- transition: color var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
2220
- text-underline-offset: calc(0.5rem / 4);
2257
+ appearance: none;
2258
+ transition: background-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), border-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), box-shadow var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
2221
2259
  }
2222
- .ui-link:hover {
2223
- text-decoration: var(--ui-_decoration-hover);
2224
- color: var(--ui-_color-hover);
2260
+ .ui-radio::before {
2261
+ content: "";
2262
+ block-size: 50%;
2263
+ inline-size: 50%;
2264
+ background-color: var(--ui-_dot-color);
2265
+ border-radius: 50%;
2266
+ opacity: 0;
2267
+ transform: scale(0);
2268
+ transition: opacity var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), transform var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
2225
2269
  }
2226
- .ui-link:focus-visible {
2227
- border-radius: calc(0.5rem / 4);
2228
- outline: 2px solid var(--ui-color-focus, var(--ui-color-primary));
2229
- outline-offset: calc(0.5rem / 4);
2270
+ .ui-radio:hover:not(:disabled) {
2271
+ border-color: var(--ui-_border-color-focus);
2230
2272
  }
2231
- .ui-link:visited {
2232
- color: var(--ui-_color-visited);
2273
+ .ui-radio:focus-visible {
2274
+ border-color: var(--ui-_border-color-focus);
2275
+ outline: none;
2276
+ box-shadow: 0 0 0 var(--ui-border-width-md, 0.125rem) var(--ui-color-focus, oklch(75% 0.15 250deg));
2233
2277
  }
2234
- .ui-link--disabled,
2235
- .ui-link[aria-disabled=true] {
2236
- color: var(--ui-color-text-muted);
2237
- opacity: 0.6;
2238
- cursor: not-allowed;
2239
- pointer-events: none;
2278
+ .ui-radio:checked {
2279
+ background: var(--ui-_bg-checked);
2280
+ border-color: var(--ui-_bg-checked);
2240
2281
  }
2241
- .ui-link--external::after {
2242
- content: "↗";
2243
- display: inline-block;
2244
- margin-inline-start: calc(0.5rem / 4);
2245
- font-size: 0.75em;
2282
+ .ui-radio:checked::before {
2283
+ opacity: 1;
2284
+ transform: scale(1);
2285
+ }
2286
+ .ui-radio:disabled {
2287
+ opacity: 0.5;
2288
+ cursor: not-allowed;
2246
2289
  }
2247
2290
  }
2248
2291
  @layer components.tokens {
2249
- .ui-menu {
2250
- --ui-_min-width: var(--ui-menu-min-width, calc(0.5rem * 16));
2251
- --ui-_max-height: var(--ui-menu-max-height, calc(0.5rem * 40));
2252
- --ui-_padding: var(--ui-menu-padding, calc(0.5rem * 1));
2253
- --ui-_radius: var(--ui-menu-radius, var(--ui-radius-md, 0.5rem));
2254
- --ui-_bg: var(--ui-menu-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
2255
- --ui-_border-color: var(--ui-menu-border-color, var(--ui-color-border, hsl(220, 10%, 90%)));
2256
- --ui-_shadow: var(--ui-menu-shadow, var(--ui-shadow-lg));
2257
- --ui-_item-padding: var(--ui-menu-item-padding, calc(0.5rem * 1) calc(0.5rem * 2));
2258
- --ui-_item-radius: var(--ui-menu-item-radius, var(--ui-radius-sm, 0.25rem));
2259
- --ui-_item-bg-hover: var(--ui-menu-item-bg-hover, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
2292
+ .ui-select {
2293
+ --ui-_height: var(--ui-select-height, var(--ui-row-2, 2rem));
2294
+ --ui-_padding-x: var(--ui-select-padding-x, var(--ui-space-1, 0.5rem));
2295
+ --ui-_font-size: var(--ui-select-font-size, var(--ui-font-size-sm, 0.875rem));
2296
+ --ui-_radius: var(--ui-select-radius, var(--ui-radius-md, 0.5rem));
2297
+ --ui-_bg: var(--ui-select-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
2298
+ --ui-_border-color: var(--ui-select-border-color, var(--ui-color-border-strong, hsl(220, 10%, 80%)));
2299
+ --ui-_border-color-focus: var(--ui-select-border-color-focus, var(--ui-color-primary, oklch(55% 0.22 250deg)));
2300
+ --ui-_text: var(--ui-select-text, var(--ui-color-text, hsl(220, 10%, 10%)));
2301
+ --ui-_icon-color: var(--ui-select-icon-color, var(--ui-color-text-muted, hsl(220, 10%, 45%)));
2260
2302
  }
2261
- }
2262
- @layer components.styles {
2263
- .ui-menu {
2264
- min-inline-size: var(--ui-_min-width);
2265
- max-block-size: var(--ui-_max-height);
2266
- padding: var(--ui-_padding);
2267
- overflow-y: auto;
2268
- background: var(--ui-_bg);
2269
- border-radius: var(--ui-_radius);
2270
- outline: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
2271
- box-shadow: var(--ui-_shadow);
2272
- outline-offset: calc(var(--ui-border-width-sm, 0.0625rem) * -1);
2303
+ .ui-select--sm {
2304
+ --ui-_height: var(--ui-select-height-sm, calc(1rem * 1.5));
2305
+ --ui-_font-size: var(--ui-select-font-size-sm, var(--ui-font-size-xs, 0.75rem));
2273
2306
  }
2274
- .ui-menu__group {
2275
- padding: 0;
2276
- margin: 0;
2277
- list-style: none;
2307
+ .ui-select--lg {
2308
+ --ui-_height: var(--ui-select-height-lg, calc(1rem * 2.5));
2309
+ --ui-_padding-x: var(--ui-select-padding-x-lg, var(--ui-space-2, 1rem));
2310
+ --ui-_font-size: var(--ui-select-font-size-lg, var(--ui-font-size-md, 1rem));
2278
2311
  }
2279
- .ui-menu__label {
2280
- padding: var(--ui-_item-padding);
2281
- font-size: var(--ui-font-size-xs, 0.75rem);
2282
- font-weight: var(--ui-weight-medium, 500);
2283
- line-height: var(--ui-row-1, 1rem);
2284
- letter-spacing: 0.05em;
2285
- text-transform: uppercase;
2286
- color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
2312
+ .ui-select--filled {
2313
+ --ui-_bg: var(--ui-select-filled-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
2314
+ --ui-_border-color: transparent;
2287
2315
  }
2288
- .ui-menu__item {
2289
- display: flex;
2290
- align-items: center;
2291
- gap: calc(0.5rem * 1);
2292
- padding: var(--ui-_item-padding);
2293
- font-size: var(--ui-font-size-sm, 0.875rem);
2294
- line-height: var(--ui-row-1, 1rem);
2295
- text-decoration: none;
2296
- color: var(--ui-color-text, hsl(220, 10%, 10%));
2297
- background: transparent;
2298
- border: none;
2299
- border-radius: var(--ui-_item-radius);
2300
- cursor: pointer;
2301
- transition: background var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
2316
+ .ui-select--ghost {
2317
+ --ui-_bg: transparent;
2318
+ --ui-_border-color: transparent;
2302
2319
  }
2303
- .ui-menu__item:hover, .ui-menu__item:focus-visible {
2304
- background: var(--ui-_item-bg-hover);
2305
- outline: none;
2320
+ .ui-select--error {
2321
+ --ui-_border-color: var(--ui-select-error-border, var(--ui-color-danger, oklch(60% 0.22 25deg)));
2322
+ --ui-_border-color-focus: var(--ui-select-error-border, var(--ui-color-danger, oklch(60% 0.22 25deg)));
2306
2323
  }
2307
- .ui-menu__item--danger {
2308
- color: var(--ui-color-danger, oklch(60% 0.22 25deg));
2324
+ .ui-select--success {
2325
+ --ui-_border-color: var(--ui-select-success-border, var(--ui-color-success, oklch(60% 0.18 145deg)));
2326
+ --ui-_border-color-focus: var(--ui-select-success-border, var(--ui-color-success, oklch(60% 0.18 145deg)));
2309
2327
  }
2310
- .ui-menu__item--danger:hover, .ui-menu__item--danger:focus-visible {
2311
- color: var(--ui-color-danger, oklch(60% 0.22 25deg));
2328
+ }
2329
+ @layer components.styles {
2330
+ .ui-select {
2331
+ display: inline-block;
2332
+ block-size: var(--ui-_height);
2333
+ padding-inline-start: var(--ui-_padding-x);
2334
+ padding-inline-end: calc(var(--ui-_height) - var(--ui-space-half, 0.25rem));
2335
+ font-family: inherit;
2336
+ font-size: var(--ui-_font-size);
2337
+ line-height: 1;
2338
+ color: var(--ui-_text);
2339
+ background-color: var(--ui-_bg);
2340
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
2341
+ border: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
2342
+ border-radius: var(--ui-_radius);
2343
+ cursor: pointer;
2344
+ appearance: none;
2345
+ transition: border-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), box-shadow var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
2346
+ background-repeat: no-repeat;
2347
+ background-position: right var(--ui-space-half, 0.25rem) center;
2348
+ background-size: calc(var(--ui-_height) * 0.5);
2312
2349
  }
2313
- .ui-menu__item--disabled,
2314
- .ui-menu__item[aria-disabled=true] {
2350
+ .ui-select:hover:not(:disabled, :focus) {
2351
+ border-color: var(--ui-color-border-strong, hsl(220, 10%, 80%));
2352
+ }
2353
+ .ui-select:focus, .ui-select--focus {
2354
+ border-color: var(--ui-_border-color-focus);
2355
+ outline: none;
2356
+ box-shadow: 0 0 0 var(--ui-border-width-md, 0.125rem) var(--ui-color-focus, oklch(75% 0.15 250deg));
2357
+ }
2358
+ .ui-select:disabled, .ui-select--disabled {
2315
2359
  opacity: 0.5;
2316
- pointer-events: none;
2360
+ cursor: not-allowed;
2317
2361
  }
2318
- .ui-menu__item-icon {
2319
- flex-shrink: 0;
2320
- block-size: calc(0.5rem * 2);
2321
- inline-size: calc(0.5rem * 2);
2362
+ .ui-select--block {
2363
+ inline-size: 100%;
2322
2364
  }
2323
- .ui-menu__item-shortcut {
2324
- margin-inline-start: auto;
2325
- font-size: var(--ui-font-size-xs, 0.75rem);
2365
+ .ui-select:invalid, .ui-select--placeholder {
2326
2366
  color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
2327
2367
  }
2328
- .ui-menu__separator {
2329
- display: flex;
2330
- align-items: center;
2331
- block-size: calc(0.5rem * 2);
2332
- margin: 0;
2333
- }
2334
- .ui-menu__separator::before {
2335
- content: "";
2336
- flex: 1;
2337
- block-size: var(--ui-border-width-sm, 1px);
2338
- background: var(--ui-color-border, hsl(220, 10%, 90%));
2368
+ }
2369
+ @layer components.tokens {
2370
+ .ui-textarea {
2371
+ --ui-_min-height: var(--ui-textarea-min-height, calc(1rem * 4));
2372
+ --ui-_padding-x: var(--ui-textarea-padding-x, var(--ui-space-1, 0.5rem));
2373
+ --ui-_padding-y: var(--ui-textarea-padding-y, var(--ui-space-1, 0.5rem));
2374
+ --ui-_font-size: var(--ui-textarea-font-size, var(--ui-font-size-sm, 0.875rem));
2375
+ --ui-_radius: var(--ui-textarea-radius, var(--ui-radius-md, 0.5rem));
2376
+ --ui-_bg: var(--ui-textarea-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
2377
+ --ui-_border-color: var(--ui-textarea-border-color, var(--ui-color-border-strong, hsl(220, 10%, 80%)));
2378
+ --ui-_border-color-focus: var(--ui-textarea-border-color-focus, var(--ui-color-primary, oklch(55% 0.22 250deg)));
2379
+ --ui-_text: var(--ui-textarea-text, var(--ui-color-text, hsl(220, 10%, 10%)));
2380
+ --ui-_placeholder: var(--ui-textarea-placeholder, var(--ui-color-text-muted, hsl(220, 10%, 45%)));
2339
2381
  }
2340
- .ui-menu__item--check,
2341
- .ui-menu__item--radio {
2342
- position: relative;
2343
- padding-inline-start: calc(0.5rem * 4);
2382
+ .ui-textarea--sm {
2383
+ --ui-_min-height: var(--ui-textarea-min-height-sm, calc(1rem * 3));
2384
+ --ui-_font-size: var(--ui-textarea-font-size-sm, var(--ui-font-size-xs, 0.75rem));
2344
2385
  }
2345
- .ui-menu__item-indicator {
2346
- display: flex;
2347
- align-items: center;
2348
- justify-content: center;
2349
- position: absolute;
2350
- inset-inline-start: calc(0.5rem * 1);
2351
- block-size: calc(0.5rem * 2);
2352
- inline-size: calc(0.5rem * 2);
2386
+ .ui-textarea--lg {
2387
+ --ui-_min-height: var(--ui-textarea-min-height-lg, calc(1rem * 6));
2388
+ --ui-_padding-x: var(--ui-textarea-padding-x-lg, var(--ui-space-2, 1rem));
2389
+ --ui-_padding-y: var(--ui-textarea-padding-y-lg, var(--ui-space-2, 1rem));
2390
+ --ui-_font-size: var(--ui-textarea-font-size-lg, var(--ui-font-size-md, 1rem));
2353
2391
  }
2354
- }
2355
- @layer components.tokens {
2356
- .ui-modal {
2357
- --ui-_bg: var(--ui-modal-bg, var(--ui-color-bg, white));
2358
- --ui-_radius: var(--ui-modal-radius, var(--ui-radius-lg, calc(0.5rem * 1.5)));
2359
- --ui-_shadow: var(--ui-modal-shadow, 0 calc(0.5rem * 3) calc(0.5rem * 6) rgb(0 0 0 / 0.25));
2360
- --ui-_padding: var(--ui-modal-padding, calc(0.5rem * 3));
2361
- --ui-_max-width: var(--ui-modal-max-width, calc(0.5rem * 60));
2362
- --ui-_max-height: var(--ui-modal-max-height, calc(100vh - 0.5rem * 8));
2363
- --ui-_z: var(--ui-modal-z, var(--ui-z-modal, 400));
2392
+ .ui-textarea--filled {
2393
+ --ui-_bg: var(--ui-textarea-filled-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
2394
+ --ui-_border-color: transparent;
2364
2395
  }
2365
- .ui-modal--sm {
2366
- --ui-_max-width: var(--ui-modal-max-width-sm, calc(0.5rem * 40));
2396
+ .ui-textarea--ghost {
2397
+ --ui-_bg: transparent;
2398
+ --ui-_border-color: transparent;
2367
2399
  }
2368
- .ui-modal--lg {
2369
- --ui-_max-width: var(--ui-modal-max-width-lg, calc(0.5rem * 80));
2400
+ .ui-textarea--error {
2401
+ --ui-_border-color: var(--ui-textarea-error-border, var(--ui-color-danger, oklch(60% 0.22 25deg)));
2402
+ --ui-_border-color-focus: var(--ui-textarea-error-border, var(--ui-color-danger, oklch(60% 0.22 25deg)));
2370
2403
  }
2371
- .ui-modal--full {
2372
- --ui-_max-width: calc(100vw - 0.5rem * 4);
2373
- --ui-_max-height: calc(100vh - 0.5rem * 4);
2374
- --ui-_radius: 0;
2404
+ .ui-textarea--success {
2405
+ --ui-_border-color: var(--ui-textarea-success-border, var(--ui-color-success, oklch(60% 0.18 145deg)));
2406
+ --ui-_border-color-focus: var(--ui-textarea-success-border, var(--ui-color-success, oklch(60% 0.18 145deg)));
2375
2407
  }
2376
2408
  }
2377
2409
  @layer components.styles {
2378
- .ui-modal {
2379
- display: flex;
2380
- align-items: center;
2381
- justify-content: center;
2382
- position: fixed;
2383
- inset: 0;
2384
- z-index: var(--ui-_z);
2385
- padding: calc(0.5rem * 2);
2386
- }
2387
- .ui-modal__content {
2388
- display: flex;
2389
- flex-direction: column;
2390
- position: relative;
2410
+ .ui-textarea {
2411
+ display: block;
2412
+ box-sizing: border-box;
2391
2413
  inline-size: 100%;
2392
- max-block-size: var(--ui-_max-height);
2393
- max-inline-size: var(--ui-_max-width);
2394
- padding: var(--ui-_padding);
2395
- overflow: hidden;
2414
+ min-block-size: var(--ui-_min-height);
2415
+ padding-block: var(--ui-_padding-y);
2416
+ padding-inline: var(--ui-_padding-x);
2417
+ font-family: inherit;
2418
+ font-size: var(--ui-_font-size);
2419
+ line-height: var(--ui-row-1, 1rem);
2420
+ color: var(--ui-_text);
2396
2421
  background: var(--ui-_bg);
2422
+ border: none;
2397
2423
  border-radius: var(--ui-_radius);
2398
- box-shadow: var(--ui-_shadow);
2424
+ outline: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
2425
+ transition: border-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), box-shadow var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
2426
+ outline-offset: calc(var(--ui-border-width-sm, 0.0625rem) * -1);
2427
+ resize: vertical;
2399
2428
  }
2400
- .ui-modal__body {
2401
- flex: 1 1 auto;
2402
- overflow-y: auto;
2429
+ .ui-textarea::placeholder {
2430
+ color: var(--ui-_placeholder);
2403
2431
  }
2404
- .ui-modal--entering .ui-modal__content,
2405
- .ui-modal--visible .ui-modal__content {
2406
- opacity: 1;
2407
- transform: scale(1);
2432
+ .ui-textarea:hover:not(:disabled, :focus) {
2433
+ outline-color: var(--ui-color-border-strong, hsl(220, 10%, 80%));
2408
2434
  }
2409
- .ui-modal--exiting .ui-modal__content,
2410
- .ui-modal--hidden .ui-modal__content {
2411
- opacity: 0;
2412
- transform: scale(0.95);
2435
+ .ui-textarea:focus, .ui-textarea--focus {
2436
+ outline-color: var(--ui-_border-color-focus);
2437
+ box-shadow: 0 0 0 var(--ui-border-width-md, 0.125rem) var(--ui-color-focus, oklch(75% 0.15 250deg));
2413
2438
  }
2414
- .ui-modal--animate .ui-modal__content {
2415
- transition: opacity var(--ui-duration-normal, 200ms) var(--ui-ease-default, ease), transform var(--ui-duration-normal, 200ms) var(--ui-ease-default, ease);
2439
+ .ui-textarea:disabled, .ui-textarea--disabled {
2440
+ opacity: 0.5;
2441
+ cursor: not-allowed;
2442
+ resize: none;
2416
2443
  }
2417
- .ui-modal--hidden {
2418
- visibility: hidden;
2419
- pointer-events: none;
2444
+ .ui-textarea:read-only {
2445
+ background: var(--ui-color-bg-subtle, hsl(220, 10%, 96%));
2446
+ resize: none;
2447
+ }
2448
+ .ui-textarea--resize-none {
2449
+ resize: none;
2450
+ }
2451
+ .ui-textarea--resize-horizontal {
2452
+ resize: horizontal;
2453
+ }
2454
+ .ui-textarea--resize-both {
2455
+ resize: both;
2420
2456
  }
2421
2457
  }
2422
2458
  @layer components.tokens {
2423
- .ui-nav {
2424
- --ui-_gap: var(--ui-nav-gap, var(--ui-space-1, 0.5rem));
2425
- --ui-_item-height: var(--ui-nav-item-height, var(--ui-row-2, 2rem));
2426
- --ui-_item-padding-x: var(--ui-nav-item-padding-x, var(--ui-space-2, 1rem));
2427
- --ui-_item-font-size: var(--ui-nav-item-font-size, var(--ui-font-size-sm, 0.875rem));
2428
- --ui-_item-font-weight: var(--ui-nav-item-font-weight, var(--ui-weight-medium, 500));
2429
- --ui-_item-color: var(--ui-nav-item-color, var(--ui-color-text-muted, hsl(220, 10%, 45%)));
2430
- --ui-_item-color-hover: var(--ui-nav-item-color-hover, var(--ui-color-text, hsl(220, 10%, 10%)));
2431
- --ui-_item-color-active: var(--ui-nav-item-color-active, var(--ui-color-primary, oklch(55% 0.22 250deg)));
2432
- --ui-_item-radius: var(--ui-nav-item-radius, var(--ui-radius-sm, 0.25rem));
2433
- --ui-_border-color: var(--ui-nav-border-color, var(--ui-color-border, hsl(220, 10%, 90%)));
2459
+ .ui-toggle {
2460
+ --ui-_track-width: var(--ui-toggle-track-width, calc(0.5rem * 5));
2461
+ --ui-_track-height: var(--ui-toggle-track-height, calc(0.5rem * 3));
2462
+ --ui-_track-bg: var(--ui-toggle-track-bg, var(--ui-color-bg-subtle, rgb(0 0 0 / 0.1)));
2463
+ --ui-_track-bg-checked: var(--ui-toggle-track-bg-checked, var(--ui-color-primary));
2464
+ --ui-_track-radius: var(--ui-toggle-track-radius, calc(0.5rem * 1.5));
2465
+ --ui-_thumb-size: var(--ui-toggle-thumb-size, calc(0.5rem * 2.5));
2466
+ --ui-_thumb-bg: var(--ui-toggle-thumb-bg, white);
2467
+ --ui-_thumb-offset: var(--ui-toggle-thumb-offset, calc(0.5rem / 4));
2434
2468
  }
2435
- .ui-nav--pills {
2436
- --ui-_item-bg-hover: var(--ui-nav-item-bg-hover, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
2437
- --ui-_item-bg-active: var(--ui-nav-item-bg-active, var(--ui-color-primary, oklch(55% 0.22 250deg)));
2438
- --ui-_item-color-active: var(--ui-nav-item-color-active, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
2469
+ .ui-toggle--sm {
2470
+ --ui-_track-width: calc(0.5rem * 4);
2471
+ --ui-_track-height: calc(0.5rem * 2);
2472
+ --ui-_track-radius: 0.5rem;
2473
+ --ui-_thumb-size: calc(0.5rem * 1.5);
2474
+ }
2475
+ .ui-toggle--lg {
2476
+ --ui-_track-width: calc(0.5rem * 6);
2477
+ --ui-_track-height: calc(0.5rem * 4);
2478
+ --ui-_track-radius: calc(0.5rem * 2);
2479
+ --ui-_thumb-size: calc(0.5rem * 3.5);
2439
2480
  }
2440
2481
  }
2441
2482
  @layer components.styles {
2442
- .ui-nav__list {
2443
- display: flex;
2444
- align-items: stretch;
2445
- gap: var(--ui-_gap);
2446
- box-sizing: border-box;
2447
- block-size: var(--ui-_item-height);
2448
- padding: 0;
2449
- margin: 0;
2450
- list-style: none;
2451
- box-shadow: inset 0 calc(var(--ui-border-width-sm, 0.0625rem) * -1) 0 var(--ui-_border-color);
2452
- }
2453
- .ui-nav__item {
2483
+ .ui-toggle {
2454
2484
  display: inline-flex;
2485
+ flex-shrink: 0;
2455
2486
  align-items: center;
2456
- box-sizing: border-box;
2457
- block-size: var(--ui-_item-height);
2458
- padding-inline: var(--ui-_item-padding-x);
2459
- font-family: var(--ui-font-sans, Noto Sans, system-ui, -apple-system, sans-serif);
2460
- font-size: var(--ui-_item-font-size);
2461
- font-weight: var(--ui-_item-font-weight);
2462
- line-height: 1;
2463
- text-decoration: none;
2464
- white-space: nowrap;
2465
- color: var(--ui-_item-color);
2466
- background: transparent;
2467
- border: none;
2468
- box-shadow: inset 0 calc(var(--ui-border-width-md, 0.125rem) * -1) 0 transparent;
2487
+ position: relative;
2488
+ block-size: var(--ui-_track-height);
2489
+ inline-size: var(--ui-_track-width);
2490
+ background: var(--ui-_track-bg);
2491
+ border-radius: var(--ui-_track-radius);
2469
2492
  cursor: pointer;
2470
- transition: color var(--ui-duration-base) var(--ui-ease-default), background var(--ui-duration-base) var(--ui-ease-default), box-shadow var(--ui-duration-base) var(--ui-ease-default);
2493
+ transition: background var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
2471
2494
  }
2472
- .ui-nav__item:hover {
2473
- color: var(--ui-_item-color-hover);
2495
+ .ui-toggle__input {
2496
+ position: absolute;
2497
+ inset: 0;
2498
+ block-size: 100%;
2499
+ inline-size: 100%;
2500
+ margin: 0;
2501
+ opacity: 0;
2502
+ cursor: pointer;
2474
2503
  }
2475
- .ui-nav__item--active {
2476
- color: var(--ui-_item-color-active);
2477
- box-shadow: inset 0 calc(var(--ui-border-width-md, 0.125rem) * -1) 0 var(--ui-_item-color-active);
2504
+ .ui-toggle__track {
2505
+ position: absolute;
2506
+ inset: 0;
2507
+ background: var(--ui-_track-bg);
2508
+ border-radius: var(--ui-_track-radius);
2509
+ transition: background var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
2478
2510
  }
2479
- .ui-nav__item--disabled {
2480
- opacity: 0.5;
2481
- pointer-events: none;
2511
+ .ui-toggle__thumb {
2512
+ position: absolute;
2513
+ inset-block-start: var(--ui-_thumb-offset);
2514
+ inset-inline-start: var(--ui-_thumb-offset);
2515
+ block-size: var(--ui-_thumb-size);
2516
+ inline-size: var(--ui-_thumb-size);
2517
+ background: var(--ui-_thumb-bg);
2518
+ border-radius: 50%;
2519
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
2520
+ transition: transform var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
2482
2521
  }
2483
- .ui-nav--pills .ui-nav__list {
2484
- box-shadow: none;
2522
+ .ui-toggle__input:checked ~ .ui-toggle__track {
2523
+ background: var(--ui-_track-bg-checked);
2485
2524
  }
2486
- .ui-nav--pills .ui-nav__item {
2487
- border-radius: var(--ui-_item-radius);
2488
- box-shadow: none;
2525
+ .ui-toggle__input:checked ~ .ui-toggle__thumb {
2526
+ transform: translateX(calc(var(--ui-_track-width) - var(--ui-_thumb-size) - var(--ui-_thumb-offset) * 2));
2489
2527
  }
2490
- .ui-nav--pills .ui-nav__item:hover {
2491
- background: var(--ui-_item-bg-hover);
2528
+ .ui-toggle__input:focus-visible ~ .ui-toggle__track {
2529
+ outline: 2px solid var(--ui-color-focus, var(--ui-color-primary));
2530
+ outline-offset: calc(0.5rem / 4);
2492
2531
  }
2493
- .ui-nav--pills .ui-nav__item--active {
2494
- color: var(--ui-_item-color-active);
2495
- background: var(--ui-_item-bg-active);
2532
+ .ui-toggle__input:disabled ~ .ui-toggle__track,
2533
+ .ui-toggle__input:disabled ~ .ui-toggle__thumb {
2534
+ opacity: 0.5;
2535
+ cursor: not-allowed;
2496
2536
  }
2497
- .ui-nav--vertical .ui-nav__list {
2498
- flex-direction: column;
2499
- align-items: stretch;
2500
- block-size: auto;
2501
- box-shadow: inset calc(var(--ui-border-width-sm, 0.0625rem) * -1) 0 0 var(--ui-_border-color);
2537
+ .ui-toggle:has(.ui-toggle__input:disabled) {
2538
+ cursor: not-allowed;
2502
2539
  }
2503
- .ui-nav--vertical .ui-nav__item {
2504
- box-shadow: inset calc(var(--ui-border-width-md, 0.125rem) * -1) 0 0 transparent;
2540
+ }
2541
+ @layer components.tokens {
2542
+ .ui-divider {
2543
+ --ui-_color: var(--ui-divider-color, var(--ui-color-border, rgb(0 0 0 / 0.1)));
2544
+ --ui-_line-size: var(--ui-divider-line-size, 1px);
2545
+ --ui-_height: var(--ui-divider-height, 0.5rem);
2546
+ --ui-_gap: var(--ui-divider-gap, calc(0.5rem * 2));
2505
2547
  }
2506
- .ui-nav--vertical .ui-nav__item--active {
2507
- box-shadow: inset calc(var(--ui-border-width-md, 0.125rem) * -1) 0 0 var(--ui-_item-color-active);
2548
+ }
2549
+ @layer components.styles {
2550
+ .ui-divider {
2551
+ display: flex;
2552
+ align-items: center;
2553
+ block-size: var(--ui-_height);
2554
+ margin: var(--ui-_gap) 0;
2555
+ font-size: var(--ui-font-size-sm, 0.875rem);
2556
+ line-height: 1;
2557
+ color: var(--ui-color-text-muted);
2508
2558
  }
2509
- .ui-nav--vertical.ui-nav--pills .ui-nav__list {
2510
- box-shadow: none;
2559
+ .ui-divider::before,
2560
+ .ui-divider::after {
2561
+ content: "";
2562
+ flex: 1;
2563
+ block-size: var(--ui-_line-size);
2564
+ background: var(--ui-_color);
2511
2565
  }
2512
- .ui-nav--vertical.ui-nav--pills .ui-nav__item {
2513
- box-shadow: none;
2566
+ .ui-divider:not(:empty) {
2567
+ --ui-_height: var(--ui-row-1, 1rem);
2514
2568
  }
2515
- }
2516
- @layer components.tokens {
2517
- .ui-overlay {
2518
- --ui-_bg: var(--ui-overlay-bg, rgb(0 0 0 / 0.5));
2519
- --ui-_z: var(--ui-overlay-z, var(--ui-z-overlay, 300));
2569
+ .ui-divider:not(:empty)::before {
2570
+ margin-inline-end: calc(0.5rem * 2);
2520
2571
  }
2521
- .ui-overlay--light {
2522
- --ui-_bg: var(--ui-overlay-bg-light, rgb(255 255 255 / 0.7));
2572
+ .ui-divider:not(:empty)::after {
2573
+ margin-inline-start: calc(0.5rem * 2);
2523
2574
  }
2524
- .ui-overlay--blur {
2525
- --ui-_bg: var(--ui-overlay-bg-blur, rgb(0 0 0 / 0.3));
2575
+ .ui-divider:empty::after {
2576
+ display: none;
2526
2577
  }
2527
- }
2528
- @layer components.styles {
2529
- .ui-overlay {
2530
- position: fixed;
2531
- inset: 0;
2532
- z-index: var(--ui-_z);
2533
- background: var(--ui-_bg);
2578
+ .ui-divider--vertical {
2579
+ flex-direction: column;
2580
+ align-self: stretch;
2581
+ margin: 0 var(--ui-_gap);
2582
+ writing-mode: vertical-rl;
2534
2583
  }
2535
- .ui-overlay--blur {
2536
- backdrop-filter: blur(calc(0.5rem * 0.5));
2584
+ .ui-divider--vertical::before,
2585
+ .ui-divider--vertical::after {
2586
+ flex: 1;
2587
+ block-size: auto;
2588
+ inline-size: var(--ui-_size);
2537
2589
  }
2538
- .ui-overlay--entering,
2539
- .ui-overlay--visible {
2540
- opacity: 1;
2590
+ .ui-divider--start::before {
2591
+ display: none;
2541
2592
  }
2542
- .ui-overlay--exiting,
2543
- .ui-overlay--hidden {
2544
- opacity: 0;
2545
- pointer-events: none;
2593
+ .ui-divider--start:not(:empty)::after {
2594
+ margin-inline-start: calc(0.5rem * 2);
2546
2595
  }
2547
- .ui-overlay--animate {
2548
- transition: opacity var(--ui-duration-normal, 200ms) var(--ui-ease-default, ease);
2596
+ .ui-divider--end::after {
2597
+ display: none;
2598
+ }
2599
+ .ui-divider--end:not(:empty)::before {
2600
+ margin-inline-end: calc(0.5rem * 2);
2601
+ }
2602
+ .ui-divider--dashed::before,
2603
+ .ui-divider--dashed::after {
2604
+ background: repeating-linear-gradient(90deg, var(--ui-_color) 0, var(--ui-_color) calc(0.5rem / 2), transparent calc(0.5rem / 2), transparent 0.5rem);
2605
+ }
2606
+ .ui-divider--vertical.ui-divider--dashed::before,
2607
+ .ui-divider--vertical.ui-divider--dashed::after {
2608
+ background: repeating-linear-gradient(180deg, var(--ui-_color) 0, var(--ui-_color) calc(0.5rem / 2), transparent calc(0.5rem / 2), transparent 0.5rem);
2549
2609
  }
2550
2610
  }
2551
2611
  @layer components.tokens {
2552
- .ui-pagination {
2553
- --ui-_gap: var(--ui-pagination-gap, calc(0.5rem * 0.5));
2554
- --ui-_item-size: var(--ui-pagination-item-size, calc(0.5rem * 4));
2555
- --ui-_item-radius: var(--ui-pagination-item-radius, var(--ui-radius-sm, 0.25rem));
2556
- --ui-_item-bg: var(--ui-pagination-item-bg, transparent);
2557
- --ui-_item-bg-hover: var(--ui-pagination-item-bg-hover, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
2558
- --ui-_item-bg-active: var(--ui-pagination-item-bg-active, var(--ui-color-primary));
2559
- --ui-_item-color: var(--ui-pagination-item-color, var(--ui-color-text, hsl(220, 10%, 10%)));
2560
- --ui-_item-color-active: var(--ui-pagination-item-color-active, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
2612
+ .ui-breadcrumb {
2613
+ --ui-_height: var(--ui-breadcrumb-height, var(--ui-row-1, 1rem));
2614
+ --ui-_gap: var(--ui-breadcrumb-gap, calc(0.5rem * 1));
2615
+ --ui-_separator-color: var(--ui-breadcrumb-separator-color, var(--ui-color-text-muted));
2616
+ --ui-_link-color: var(--ui-breadcrumb-link-color, var(--ui-color-text-muted));
2617
+ --ui-_current-color: var(--ui-breadcrumb-current-color, var(--ui-color-text));
2561
2618
  }
2562
2619
  }
2563
2620
  @layer components.styles {
2564
- .ui-pagination {
2565
- display: flex;
2566
- align-items: center;
2567
- gap: var(--ui-_gap);
2568
- }
2569
- .ui-pagination__list {
2621
+ .ui-breadcrumb {
2570
2622
  display: flex;
2623
+ flex-wrap: wrap;
2571
2624
  align-items: center;
2572
2625
  gap: var(--ui-_gap);
2626
+ block-size: var(--ui-_height);
2573
2627
  padding: 0;
2574
2628
  margin: 0;
2629
+ font-size: var(--ui-font-size-sm, 0.875rem);
2630
+ line-height: 1;
2575
2631
  list-style: none;
2576
2632
  }
2577
- .ui-pagination__item {
2633
+ .ui-breadcrumb__item {
2578
2634
  display: flex;
2579
- }
2580
- .ui-pagination__link {
2581
- display: inline-flex;
2582
2635
  align-items: center;
2583
- justify-content: center;
2584
- block-size: var(--ui-_item-size);
2585
- min-inline-size: var(--ui-_item-size);
2586
- padding-inline: calc(0.5rem * 1);
2587
- font-size: var(--ui-font-size-sm, 0.875rem);
2588
- text-decoration: none;
2589
- color: var(--ui-_item-color);
2590
- background: var(--ui-_item-bg);
2591
- border-radius: var(--ui-_item-radius);
2592
- transition: background var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease), color var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
2636
+ gap: var(--ui-_gap);
2637
+ block-size: var(--ui-_height);
2593
2638
  }
2594
- .ui-pagination__link:hover {
2595
- background: var(--ui-_item-bg-hover);
2639
+ .ui-breadcrumb__item:not(:last-child)::after {
2640
+ content: var(--ui-breadcrumb-separator, "/");
2641
+ color: var(--ui-_separator-color);
2596
2642
  }
2597
- .ui-pagination__link[aria-current=page],
2598
- .ui-pagination__link--active {
2599
- color: var(--ui-_item-color-active);
2600
- background: var(--ui-_item-bg-active);
2601
- pointer-events: none;
2643
+ .ui-breadcrumb__link {
2644
+ text-decoration: none;
2645
+ color: var(--ui-_link-color);
2646
+ transition: color var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
2602
2647
  }
2603
- .ui-pagination__link[aria-disabled=true],
2604
- .ui-pagination__link--disabled {
2605
- opacity: 0.5;
2606
- pointer-events: none;
2648
+ .ui-breadcrumb__link:hover {
2649
+ text-decoration: underline;
2650
+ color: var(--ui-color-primary);
2607
2651
  }
2608
- .ui-pagination__prev,
2609
- .ui-pagination__next {
2610
- display: inline-flex;
2611
- align-items: center;
2612
- gap: calc(0.5rem * 0.5);
2613
- padding-inline: calc(0.5rem * 1.5);
2652
+ .ui-breadcrumb__item:last-child .ui-breadcrumb__link,
2653
+ .ui-breadcrumb__current {
2654
+ color: var(--ui-_current-color);
2655
+ pointer-events: none;
2614
2656
  }
2615
- .ui-pagination__ellipsis {
2616
- display: inline-flex;
2617
- align-items: center;
2618
- justify-content: center;
2619
- block-size: var(--ui-_item-size);
2620
- min-inline-size: var(--ui-_item-size);
2621
- color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
2657
+ .ui-breadcrumb__item--hidden {
2658
+ display: none;
2622
2659
  }
2623
- .ui-pagination--sm {
2624
- --ui-_item-size: calc(0.5rem * 3);
2625
- --ui-_gap: calc(0.5rem * 0.25);
2626
- }
2627
- .ui-pagination--lg {
2628
- --ui-_item-size: calc(0.5rem * 5);
2629
- --ui-_gap: calc(0.5rem * 0.75);
2660
+ .ui-breadcrumb__ellipsis {
2661
+ color: var(--ui-_separator-color);
2630
2662
  }
2631
2663
  }
2632
2664
  @layer components.tokens {
2633
- .ui-popover {
2634
- --ui-_bg: var(--ui-popover-bg, var(--ui-color-bg, white));
2635
- --ui-_border-color: var(--ui-popover-border-color, var(--ui-color-border, rgb(0 0 0 / 0.1)));
2636
- --ui-_radius: var(--ui-popover-radius, var(--ui-radius-md, calc(0.5rem * 1)));
2637
- --ui-_shadow: var(--ui-popover-shadow, 0 calc(0.5rem / 2) calc(0.5rem * 2) rgb(0 0 0 / 0.15));
2638
- --ui-_padding: var(--ui-popover-padding, calc(0.5rem * 2));
2639
- --ui-_max-width: var(--ui-popover-max-width, calc(0.5rem * 40));
2640
- --ui-_z: var(--ui-popover-z, var(--ui-z-popover, 500));
2641
- --ui-_arrow-size: var(--ui-popover-arrow-size, calc(0.5rem));
2665
+ .ui-menu {
2666
+ --ui-_min-width: var(--ui-menu-min-width, calc(0.5rem * 16));
2667
+ --ui-_max-height: var(--ui-menu-max-height, calc(0.5rem * 40));
2668
+ --ui-_padding: var(--ui-menu-padding, calc(0.5rem * 1));
2669
+ --ui-_radius: var(--ui-menu-radius, var(--ui-radius-md, 0.5rem));
2670
+ --ui-_bg: var(--ui-menu-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
2671
+ --ui-_border-color: var(--ui-menu-border-color, var(--ui-color-border, hsl(220, 10%, 90%)));
2672
+ --ui-_shadow: var(--ui-menu-shadow, var(--ui-shadow-lg));
2673
+ --ui-_item-padding: var(--ui-menu-item-padding, calc(0.5rem * 1) calc(0.5rem * 2));
2674
+ --ui-_item-radius: var(--ui-menu-item-radius, var(--ui-radius-sm, 0.25rem));
2675
+ --ui-_item-bg-hover: var(--ui-menu-item-bg-hover, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
2642
2676
  }
2643
2677
  }
2644
2678
  @layer components.styles {
2645
- .ui-popover {
2646
- position: absolute;
2647
- z-index: var(--ui-_z);
2648
- max-inline-size: var(--ui-_max-width);
2679
+ .ui-menu {
2680
+ min-inline-size: var(--ui-_min-width);
2681
+ max-block-size: var(--ui-_max-height);
2649
2682
  padding: var(--ui-_padding);
2650
- line-height: var(--ui-row-1, 1rem);
2683
+ overflow-y: auto;
2651
2684
  background: var(--ui-_bg);
2652
2685
  border-radius: var(--ui-_radius);
2653
2686
  outline: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
2654
2687
  box-shadow: var(--ui-_shadow);
2655
2688
  outline-offset: calc(var(--ui-border-width-sm, 0.0625rem) * -1);
2656
2689
  }
2657
- .ui-popover__header {
2658
- padding-block-end: calc(0.5rem * 2);
2659
- margin-block-end: calc(0.5rem * 2);
2660
- box-shadow: inset 0 calc(var(--ui-border-width-sm, 1px) * -1) 0 var(--ui-_border-color);
2661
- }
2662
- .ui-popover__title {
2690
+ .ui-menu__group {
2691
+ padding: 0;
2663
2692
  margin: 0;
2664
- font-size: var(--ui-font-size-md, 1rem);
2665
- font-weight: var(--ui-weight-semibold, 600);
2693
+ list-style: none;
2666
2694
  }
2667
- .ui-popover--top::after {
2668
- content: "";
2669
- position: absolute;
2670
- inset-block-start: 100%;
2671
- inset-inline-start: 50%;
2672
- border: var(--ui-_arrow-size) solid transparent;
2673
- border-block-start-color: var(--ui-_bg);
2674
- transform: translateX(-50%);
2695
+ .ui-menu__label {
2696
+ padding: var(--ui-_item-padding);
2697
+ font-size: var(--ui-font-size-xs, 0.75rem);
2698
+ font-weight: var(--ui-weight-medium, 500);
2699
+ line-height: var(--ui-row-1, 1rem);
2700
+ letter-spacing: 0.05em;
2701
+ text-transform: uppercase;
2702
+ color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
2675
2703
  }
2676
- .ui-popover--top::before {
2677
- content: "";
2678
- position: absolute;
2679
- inset-block-start: 100%;
2680
- inset-inline-start: 50%;
2681
- border: calc(var(--ui-_arrow-size) + 1px) solid transparent;
2682
- border-block-start-color: var(--ui-_border-color);
2683
- transform: translateX(-50%);
2704
+ .ui-menu__item {
2705
+ display: flex;
2706
+ align-items: center;
2707
+ gap: calc(0.5rem * 1);
2708
+ padding: var(--ui-_item-padding);
2709
+ font-size: var(--ui-font-size-sm, 0.875rem);
2710
+ line-height: var(--ui-row-1, 1rem);
2711
+ text-decoration: none;
2712
+ color: var(--ui-color-text, hsl(220, 10%, 10%));
2713
+ background: transparent;
2714
+ border: none;
2715
+ border-radius: var(--ui-_item-radius);
2716
+ cursor: pointer;
2717
+ transition: background var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
2684
2718
  }
2685
- .ui-popover--bottom::after {
2686
- content: "";
2687
- position: absolute;
2688
- inset-block-end: 100%;
2689
- inset-inline-start: 50%;
2690
- border: var(--ui-_arrow-size) solid transparent;
2691
- border-block-end-color: var(--ui-_bg);
2692
- transform: translateX(-50%);
2719
+ .ui-menu__item:hover, .ui-menu__item:focus-visible {
2720
+ background: var(--ui-_item-bg-hover);
2721
+ outline: none;
2693
2722
  }
2694
- .ui-popover--bottom::before {
2695
- content: "";
2696
- position: absolute;
2697
- inset-block-end: 100%;
2698
- inset-inline-start: 50%;
2699
- border: calc(var(--ui-_arrow-size) + 1px) solid transparent;
2700
- border-block-end-color: var(--ui-_border-color);
2701
- transform: translateX(-50%);
2723
+ .ui-menu__item--danger {
2724
+ color: var(--ui-color-danger, oklch(60% 0.22 25deg));
2702
2725
  }
2703
- .ui-popover--visible {
2704
- opacity: 1;
2726
+ .ui-menu__item--danger:hover, .ui-menu__item--danger:focus-visible {
2727
+ color: var(--ui-color-danger, oklch(60% 0.22 25deg));
2705
2728
  }
2706
- .ui-popover--hidden {
2707
- opacity: 0;
2729
+ .ui-menu__item--disabled,
2730
+ .ui-menu__item[aria-disabled=true] {
2731
+ opacity: 0.5;
2708
2732
  pointer-events: none;
2709
2733
  }
2710
- .ui-popover--animate {
2711
- transition: opacity var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
2712
- }
2713
- }
2714
- @layer components.tokens {
2715
- .ui-progress {
2716
- --ui-_height: var(--ui-progress-height, calc(0.5rem * 1));
2717
- --ui-_bg: var(--ui-progress-bg, var(--ui-color-bg-subtle, rgb(0 0 0 / 0.1)));
2718
- --ui-_fill: var(--ui-progress-fill, var(--ui-color-primary));
2719
- --ui-_radius: var(--ui-progress-radius, var(--ui-radius-full, 9999px));
2720
- }
2721
- .ui-progress--sm {
2722
- --ui-_height: calc(0.5rem * 1);
2723
- }
2724
- .ui-progress--lg {
2725
- --ui-_height: calc(0.5rem * 2);
2726
- }
2727
- }
2728
- @layer components.styles {
2729
- .ui-progress {
2730
- position: relative;
2731
- block-size: var(--ui-_height);
2732
- overflow: hidden;
2733
- background: var(--ui-_bg);
2734
- border-radius: var(--ui-_radius);
2735
- }
2736
- .ui-progress__bar {
2737
- block-size: 100%;
2738
- background: var(--ui-_fill);
2739
- border-radius: var(--ui-_radius);
2740
- transition: inline-size var(--ui-duration-normal, 200ms) var(--ui-ease-default, ease);
2741
- }
2742
- .ui-progress--indeterminate .ui-progress__bar {
2743
- inline-size: 30%;
2744
- animation: progress-indeterminate 1.5s infinite ease-in-out;
2745
- }
2746
- @keyframes progress-indeterminate {
2747
- 0% {
2748
- transform: translateX(-100%);
2749
- }
2750
- 100% {
2751
- transform: translateX(400%);
2752
- }
2753
- }
2754
- .ui-progress--striped .ui-progress__bar {
2755
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
2756
- background-size: 0.5rem 0.5rem;
2757
- }
2758
- .ui-progress--animated .ui-progress__bar {
2759
- animation: progress-stripes 1s linear infinite;
2760
- }
2761
- @keyframes progress-stripes {
2762
- from {
2763
- background-position: 0.5rem 0;
2764
- }
2765
- to {
2766
- background-position: 0 0;
2767
- }
2768
- }
2769
- .ui-progress--success {
2770
- --ui-_fill: var(--ui-color-success);
2771
- }
2772
- .ui-progress--warning {
2773
- --ui-_fill: var(--ui-color-warning);
2774
- }
2775
- .ui-progress--danger {
2776
- --ui-_fill: var(--ui-color-danger);
2777
- }
2778
- }
2779
- @layer components.tokens {
2780
- .ui-radio {
2781
- --ui-_size: var(--ui-radio-size, calc(0.5rem * 2));
2782
- --ui-_bg: var(--ui-radio-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
2783
- --ui-_bg-checked: var(--ui-radio-bg-checked, var(--ui-color-primary, oklch(55% 0.22 250deg)));
2784
- --ui-_border-color: var(--ui-radio-border-color, var(--ui-color-border-strong, hsl(220, 10%, 80%)));
2785
- --ui-_border-color-focus: var(--ui-radio-border-color-focus, var(--ui-color-primary, oklch(55% 0.22 250deg)));
2786
- --ui-_dot-color: var(--ui-radio-dot-color, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
2787
- }
2788
- .ui-radio--lg {
2789
- --ui-_size: var(--ui-radio-size-lg, calc(0.5rem * 3));
2734
+ .ui-menu__item-icon {
2735
+ flex-shrink: 0;
2736
+ block-size: calc(0.5rem * 2);
2737
+ inline-size: calc(0.5rem * 2);
2790
2738
  }
2791
- .ui-radio--error {
2792
- --ui-_border-color: var(--ui-radio-error-border, var(--ui-color-danger, oklch(60% 0.22 25deg)));
2793
- --ui-_border-color-focus: var(--ui-radio-error-border, var(--ui-color-danger, oklch(60% 0.22 25deg)));
2739
+ .ui-menu__item-shortcut {
2740
+ margin-inline-start: auto;
2741
+ font-size: var(--ui-font-size-xs, 0.75rem);
2742
+ color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
2794
2743
  }
2795
- }
2796
- @layer components.styles {
2797
- .ui-radio {
2798
- display: inline-flex;
2799
- flex-shrink: 0;
2744
+ .ui-menu__separator {
2745
+ display: flex;
2800
2746
  align-items: center;
2801
- justify-content: center;
2802
- block-size: var(--ui-_size);
2803
- inline-size: var(--ui-_size);
2747
+ block-size: calc(0.5rem * 2);
2804
2748
  margin: 0;
2805
- vertical-align: middle;
2806
- background: var(--ui-_bg);
2807
- border: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
2808
- border-radius: 50%;
2809
- cursor: pointer;
2810
- appearance: none;
2811
- transition: background-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), border-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), box-shadow var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
2812
2749
  }
2813
- .ui-radio::before {
2750
+ .ui-menu__separator::before {
2814
2751
  content: "";
2815
- block-size: 50%;
2816
- inline-size: 50%;
2817
- background-color: var(--ui-_dot-color);
2818
- border-radius: 50%;
2819
- opacity: 0;
2820
- transform: scale(0);
2821
- transition: opacity var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), transform var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
2822
- }
2823
- .ui-radio:hover:not(:disabled) {
2824
- border-color: var(--ui-_border-color-focus);
2825
- }
2826
- .ui-radio:focus-visible {
2827
- border-color: var(--ui-_border-color-focus);
2828
- outline: none;
2829
- box-shadow: 0 0 0 var(--ui-border-width-md, 0.125rem) var(--ui-color-focus, oklch(75% 0.15 250deg));
2830
- }
2831
- .ui-radio:checked {
2832
- background: var(--ui-_bg-checked);
2833
- border-color: var(--ui-_bg-checked);
2752
+ flex: 1;
2753
+ block-size: var(--ui-border-width-sm, 1px);
2754
+ background: var(--ui-color-border, hsl(220, 10%, 90%));
2834
2755
  }
2835
- .ui-radio:checked::before {
2836
- opacity: 1;
2837
- transform: scale(1);
2756
+ .ui-menu__item--check,
2757
+ .ui-menu__item--radio {
2758
+ position: relative;
2759
+ padding-inline-start: calc(0.5rem * 4);
2838
2760
  }
2839
- .ui-radio:disabled {
2840
- opacity: 0.5;
2841
- cursor: not-allowed;
2761
+ .ui-menu__item-indicator {
2762
+ display: flex;
2763
+ align-items: center;
2764
+ justify-content: center;
2765
+ position: absolute;
2766
+ inset-inline-start: calc(0.5rem * 1);
2767
+ block-size: calc(0.5rem * 2);
2768
+ inline-size: calc(0.5rem * 2);
2842
2769
  }
2843
2770
  }
2844
2771
  @layer components.tokens {
2845
- .ui-select {
2846
- --ui-_height: var(--ui-select-height, var(--ui-row-2, 2rem));
2847
- --ui-_padding-x: var(--ui-select-padding-x, var(--ui-space-1, 0.5rem));
2848
- --ui-_font-size: var(--ui-select-font-size, var(--ui-font-size-sm, 0.875rem));
2849
- --ui-_radius: var(--ui-select-radius, var(--ui-radius-md, 0.5rem));
2850
- --ui-_bg: var(--ui-select-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
2851
- --ui-_border-color: var(--ui-select-border-color, var(--ui-color-border-strong, hsl(220, 10%, 80%)));
2852
- --ui-_border-color-focus: var(--ui-select-border-color-focus, var(--ui-color-primary, oklch(55% 0.22 250deg)));
2853
- --ui-_text: var(--ui-select-text, var(--ui-color-text, hsl(220, 10%, 10%)));
2854
- --ui-_icon-color: var(--ui-select-icon-color, var(--ui-color-text-muted, hsl(220, 10%, 45%)));
2855
- }
2856
- .ui-select--sm {
2857
- --ui-_height: var(--ui-select-height-sm, calc(1rem * 1.5));
2858
- --ui-_font-size: var(--ui-select-font-size-sm, var(--ui-font-size-xs, 0.75rem));
2859
- }
2860
- .ui-select--lg {
2861
- --ui-_height: var(--ui-select-height-lg, calc(1rem * 2.5));
2862
- --ui-_padding-x: var(--ui-select-padding-x-lg, var(--ui-space-2, 1rem));
2863
- --ui-_font-size: var(--ui-select-font-size-lg, var(--ui-font-size-md, 1rem));
2864
- }
2865
- .ui-select--filled {
2866
- --ui-_bg: var(--ui-select-filled-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
2867
- --ui-_border-color: transparent;
2868
- }
2869
- .ui-select--ghost {
2870
- --ui-_bg: transparent;
2871
- --ui-_border-color: transparent;
2872
- }
2873
- .ui-select--error {
2874
- --ui-_border-color: var(--ui-select-error-border, var(--ui-color-danger, oklch(60% 0.22 25deg)));
2875
- --ui-_border-color-focus: var(--ui-select-error-border, var(--ui-color-danger, oklch(60% 0.22 25deg)));
2876
- }
2877
- .ui-select--success {
2878
- --ui-_border-color: var(--ui-select-success-border, var(--ui-color-success, oklch(60% 0.18 145deg)));
2879
- --ui-_border-color-focus: var(--ui-select-success-border, var(--ui-color-success, oklch(60% 0.18 145deg)));
2880
- }
2881
- }
2882
- @layer components.styles {
2883
- .ui-select {
2884
- display: inline-block;
2885
- block-size: var(--ui-_height);
2886
- padding-inline-start: var(--ui-_padding-x);
2887
- padding-inline-end: calc(var(--ui-_height) - var(--ui-space-half, 0.25rem));
2888
- font-family: inherit;
2889
- font-size: var(--ui-_font-size);
2890
- line-height: 1;
2891
- color: var(--ui-_text);
2892
- background-color: var(--ui-_bg);
2893
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
2894
- border: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
2895
- border-radius: var(--ui-_radius);
2896
- cursor: pointer;
2897
- appearance: none;
2898
- transition: border-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), box-shadow var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
2899
- background-repeat: no-repeat;
2900
- background-position: right var(--ui-space-half, 0.25rem) center;
2901
- background-size: calc(var(--ui-_height) * 0.5);
2902
- }
2903
- .ui-select:hover:not(:disabled, :focus) {
2904
- border-color: var(--ui-color-border-strong, hsl(220, 10%, 80%));
2905
- }
2906
- .ui-select:focus, .ui-select--focus {
2907
- border-color: var(--ui-_border-color-focus);
2908
- outline: none;
2909
- box-shadow: 0 0 0 var(--ui-border-width-md, 0.125rem) var(--ui-color-focus, oklch(75% 0.15 250deg));
2910
- }
2911
- .ui-select:disabled, .ui-select--disabled {
2912
- opacity: 0.5;
2913
- cursor: not-allowed;
2914
- }
2915
- .ui-select--block {
2916
- inline-size: 100%;
2917
- }
2918
- .ui-select:invalid, .ui-select--placeholder {
2919
- color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
2772
+ .ui-nav {
2773
+ --ui-_gap: var(--ui-nav-gap, var(--ui-space-1, 0.5rem));
2774
+ --ui-_item-height: var(--ui-nav-item-height, var(--ui-row-2, 2rem));
2775
+ --ui-_item-padding-x: var(--ui-nav-item-padding-x, var(--ui-space-2, 1rem));
2776
+ --ui-_item-font-size: var(--ui-nav-item-font-size, var(--ui-font-size-sm, 0.875rem));
2777
+ --ui-_item-font-weight: var(--ui-nav-item-font-weight, var(--ui-weight-medium, 500));
2778
+ --ui-_item-color: var(--ui-nav-item-color, var(--ui-color-text-muted, hsl(220, 10%, 45%)));
2779
+ --ui-_item-color-hover: var(--ui-nav-item-color-hover, var(--ui-color-text, hsl(220, 10%, 10%)));
2780
+ --ui-_item-color-active: var(--ui-nav-item-color-active, var(--ui-color-primary, oklch(55% 0.22 250deg)));
2781
+ --ui-_item-radius: var(--ui-nav-item-radius, var(--ui-radius-sm, 0.25rem));
2782
+ --ui-_border-color: var(--ui-nav-border-color, var(--ui-color-border, hsl(220, 10%, 90%)));
2920
2783
  }
2921
- }
2922
- @layer components.tokens {
2923
- .ui-skeleton {
2924
- --ui-_bg: var(--ui-skeleton-bg, var(--ui-color-bg-subtle, rgb(0 0 0 / 0.1)));
2925
- --ui-_shimmer: var(--ui-skeleton-shimmer, rgb(255 255 255 / 0.5));
2926
- --ui-_radius: var(--ui-skeleton-radius, var(--ui-radius-sm, calc(0.5rem / 2)));
2784
+ .ui-nav--pills {
2785
+ --ui-_item-bg-hover: var(--ui-nav-item-bg-hover, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
2786
+ --ui-_item-bg-active: var(--ui-nav-item-bg-active, var(--ui-color-primary, oklch(55% 0.22 250deg)));
2787
+ --ui-_item-color-active: var(--ui-nav-item-color-active, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
2927
2788
  }
2928
2789
  }
2929
2790
  @layer components.styles {
2930
- .ui-skeleton {
2931
- display: block;
2932
- position: relative;
2933
- overflow: hidden;
2934
- background: var(--ui-_bg);
2935
- border-radius: var(--ui-_radius);
2936
- }
2937
- .ui-skeleton::after {
2938
- content: "";
2939
- position: absolute;
2940
- inset: 0;
2941
- background: linear-gradient(90deg, transparent 0%, var(--ui-_shimmer) 50%, transparent 100%);
2942
- animation: skeleton-shimmer 1.5s infinite;
2943
- transform: translateX(-100%);
2944
- }
2945
- @keyframes skeleton-shimmer {
2946
- 100% {
2947
- transform: translateX(100%);
2948
- }
2949
- }
2950
- .ui-skeleton--text {
2951
- block-size: calc(0.5rem * 2);
2952
- inline-size: 100%;
2953
- }
2954
- .ui-skeleton--heading {
2955
- block-size: calc(0.5rem * 3);
2956
- inline-size: 60%;
2957
- }
2958
- .ui-skeleton--circle {
2959
- block-size: calc(0.5rem * 5);
2960
- inline-size: calc(0.5rem * 5);
2961
- border-radius: 50%;
2962
- }
2963
- .ui-skeleton--rect {
2964
- block-size: calc(0.5rem * 20);
2965
- inline-size: 100%;
2966
- }
2967
- .ui-skeleton--static::after {
2968
- animation: none;
2969
- }
2970
- .ui-skeleton--pulse {
2971
- animation: skeleton-pulse 1.5s infinite ease-in-out;
2791
+ .ui-nav__list {
2792
+ display: flex;
2793
+ align-items: stretch;
2794
+ gap: var(--ui-_gap);
2795
+ box-sizing: border-box;
2796
+ block-size: var(--ui-_item-height);
2797
+ padding: 0;
2798
+ margin: 0;
2799
+ list-style: none;
2800
+ box-shadow: inset 0 calc(var(--ui-border-width-sm, 0.0625rem) * -1) 0 var(--ui-_border-color);
2972
2801
  }
2973
- .ui-skeleton--pulse::after {
2974
- display: none;
2802
+ .ui-nav__item {
2803
+ display: inline-flex;
2804
+ align-items: center;
2805
+ box-sizing: border-box;
2806
+ block-size: var(--ui-_item-height);
2807
+ padding-inline: var(--ui-_item-padding-x);
2808
+ font-family: var(--ui-font-sans, Noto Sans, system-ui, -apple-system, sans-serif);
2809
+ font-size: var(--ui-_item-font-size);
2810
+ font-weight: var(--ui-_item-font-weight);
2811
+ line-height: 1;
2812
+ text-decoration: none;
2813
+ white-space: nowrap;
2814
+ color: var(--ui-_item-color);
2815
+ background: transparent;
2816
+ border: none;
2817
+ box-shadow: inset 0 calc(var(--ui-border-width-md, 0.125rem) * -1) 0 transparent;
2818
+ cursor: pointer;
2819
+ transition: color var(--ui-duration-base) var(--ui-ease-default), background var(--ui-duration-base) var(--ui-ease-default), box-shadow var(--ui-duration-base) var(--ui-ease-default);
2975
2820
  }
2976
- @keyframes skeleton-pulse {
2977
- 0%, 100% {
2978
- opacity: 1;
2979
- }
2980
- 50% {
2981
- opacity: 0.5;
2982
- }
2821
+ .ui-nav__item:hover {
2822
+ color: var(--ui-_item-color-hover);
2983
2823
  }
2984
- }
2985
- @layer components.tokens {
2986
- .ui-spinner {
2987
- --ui-_size: var(--ui-spinner-size, calc(var(--ui-unit) * 4));
2988
- --ui-_border-width: var(--ui-spinner-border-width, var(--ui-border-width-md));
2989
- --ui-_color: var(--ui-spinner-color, currentcolor);
2990
- --ui-_track-color: var(--ui-spinner-track-color, transparent);
2991
- --ui-_duration: var(--ui-spinner-duration, 750ms);
2824
+ .ui-nav__item--active {
2825
+ color: var(--ui-_item-color-active);
2826
+ box-shadow: inset 0 calc(var(--ui-border-width-md, 0.125rem) * -1) 0 var(--ui-_item-color-active);
2992
2827
  }
2993
- .ui-spinner--xs {
2994
- --ui-_size: var(--ui-spinner-size-xs, calc(var(--ui-unit) * 2));
2995
- --ui-_border-width: var(--ui-spinner-border-width-xs, var(--ui-border-width-sm));
2828
+ .ui-nav__item--disabled {
2829
+ opacity: 0.5;
2830
+ pointer-events: none;
2996
2831
  }
2997
- .ui-spinner--sm {
2998
- --ui-_size: var(--ui-spinner-size-sm, calc(var(--ui-unit) * 3));
2999
- --ui-_border-width: var(--ui-spinner-border-width-sm, var(--ui-border-width-md));
2832
+ .ui-nav--pills .ui-nav__list {
2833
+ box-shadow: none;
3000
2834
  }
3001
- .ui-spinner--lg {
3002
- --ui-_size: var(--ui-spinner-size-lg, calc(var(--ui-unit) * 5));
3003
- --ui-_border-width: var(--ui-spinner-border-width-lg, var(--ui-border-width-md));
2835
+ .ui-nav--pills .ui-nav__item {
2836
+ border-radius: var(--ui-_item-radius);
2837
+ box-shadow: none;
3004
2838
  }
3005
- .ui-spinner--xl {
3006
- --ui-_size: var(--ui-spinner-size-xl, calc(var(--ui-unit) * 6));
3007
- --ui-_border-width: var(--ui-spinner-border-width-xl, var(--ui-border-width-lg));
2839
+ .ui-nav--pills .ui-nav__item:hover {
2840
+ background: var(--ui-_item-bg-hover);
3008
2841
  }
3009
- }
3010
- @layer components.styles {
3011
- .ui-spinner {
3012
- display: inline-block;
3013
- flex-shrink: 0;
3014
- box-sizing: border-box;
3015
- block-size: var(--ui-_size);
3016
- inline-size: var(--ui-_size);
3017
- vertical-align: middle;
3018
- border: var(--ui-_border-width) solid var(--ui-_track-color);
3019
- border-radius: 50%;
3020
- border-block-start-color: var(--ui-_color);
3021
- animation: spinner-rotate var(--ui-_duration) linear infinite;
2842
+ .ui-nav--pills .ui-nav__item--active {
2843
+ color: var(--ui-_item-color-active);
2844
+ background: var(--ui-_item-bg-active);
3022
2845
  }
3023
- @keyframes spinner-rotate {
3024
- to {
3025
- transform: rotate(360deg);
3026
- }
2846
+ .ui-nav--vertical .ui-nav__list {
2847
+ flex-direction: column;
2848
+ align-items: stretch;
2849
+ block-size: auto;
2850
+ box-shadow: inset calc(var(--ui-border-width-sm, 0.0625rem) * -1) 0 0 var(--ui-_border-color);
3027
2851
  }
3028
- }
3029
- @layer components.tokens {
3030
- .ui-status {
3031
- --ui-_size: var(--ui-status-size, calc(0.5rem * 1));
3032
- --ui-_color: var(--ui-status-color, var(--ui-color-text-muted));
3033
- --ui-_gap: var(--ui-status-gap, calc(0.5rem * 1));
2852
+ .ui-nav--vertical .ui-nav__item {
2853
+ box-shadow: inset calc(var(--ui-border-width-md, 0.125rem) * -1) 0 0 transparent;
3034
2854
  }
3035
- .ui-status--success {
3036
- --ui-_color: var(--ui-color-success);
2855
+ .ui-nav--vertical .ui-nav__item--active {
2856
+ box-shadow: inset calc(var(--ui-border-width-md, 0.125rem) * -1) 0 0 var(--ui-_item-color-active);
3037
2857
  }
3038
- .ui-status--warning {
3039
- --ui-_color: var(--ui-color-warning);
2858
+ .ui-nav--vertical.ui-nav--pills .ui-nav__list {
2859
+ box-shadow: none;
3040
2860
  }
3041
- .ui-status--danger {
3042
- --ui-_color: var(--ui-color-danger);
2861
+ .ui-nav--vertical.ui-nav--pills .ui-nav__item {
2862
+ box-shadow: none;
3043
2863
  }
3044
- .ui-status--info {
3045
- --ui-_color: var(--ui-color-primary);
2864
+ }
2865
+ @layer components.tokens {
2866
+ .ui-pagination {
2867
+ --ui-_gap: var(--ui-pagination-gap, calc(0.5rem * 0.5));
2868
+ --ui-_item-size: var(--ui-pagination-item-size, calc(0.5rem * 4));
2869
+ --ui-_item-radius: var(--ui-pagination-item-radius, var(--ui-radius-sm, 0.25rem));
2870
+ --ui-_item-bg: var(--ui-pagination-item-bg, transparent);
2871
+ --ui-_item-bg-hover: var(--ui-pagination-item-bg-hover, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
2872
+ --ui-_item-bg-active: var(--ui-pagination-item-bg-active, var(--ui-color-primary));
2873
+ --ui-_item-color: var(--ui-pagination-item-color, var(--ui-color-text, hsl(220, 10%, 10%)));
2874
+ --ui-_item-color-active: var(--ui-pagination-item-color-active, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
3046
2875
  }
3047
2876
  }
3048
2877
  @layer components.styles {
3049
- .ui-status {
3050
- display: inline-flex;
2878
+ .ui-pagination {
2879
+ display: flex;
3051
2880
  align-items: center;
3052
2881
  gap: var(--ui-_gap);
3053
2882
  }
3054
- .ui-status__dot {
3055
- flex-shrink: 0;
3056
- block-size: var(--ui-_size);
3057
- inline-size: var(--ui-_size);
3058
- background: var(--ui-_color);
3059
- border-radius: 50%;
3060
- }
3061
- .ui-status--pulse .ui-status__dot {
3062
- position: relative;
3063
- }
3064
- .ui-status--pulse .ui-status__dot::before {
3065
- content: "";
3066
- position: absolute;
3067
- inset: 0;
3068
- background: var(--ui-_color);
3069
- border-radius: 50%;
3070
- animation: status-pulse 2s infinite;
3071
- }
3072
- @keyframes status-pulse {
3073
- 0% {
3074
- opacity: 1;
3075
- transform: scale(1);
3076
- }
3077
- 100% {
3078
- opacity: 0;
3079
- transform: scale(2.5);
3080
- }
2883
+ .ui-pagination__list {
2884
+ display: flex;
2885
+ align-items: center;
2886
+ gap: var(--ui-_gap);
2887
+ padding: 0;
2888
+ margin: 0;
2889
+ list-style: none;
3081
2890
  }
3082
- .ui-status--sm {
3083
- --ui-_size: calc(0.5rem * 0.75);
3084
- --ui-_gap: calc(0.5rem * 0.75);
2891
+ .ui-pagination__item {
2892
+ display: flex;
3085
2893
  }
3086
- .ui-status--lg {
3087
- --ui-_size: calc(0.5rem * 1.5);
3088
- --ui-_gap: calc(0.5rem * 1.5);
2894
+ .ui-pagination__link {
2895
+ display: inline-flex;
2896
+ align-items: center;
2897
+ justify-content: center;
2898
+ block-size: var(--ui-_item-size);
2899
+ min-inline-size: var(--ui-_item-size);
2900
+ padding-inline: calc(0.5rem * 1);
2901
+ font-size: var(--ui-font-size-sm, 0.875rem);
2902
+ text-decoration: none;
2903
+ color: var(--ui-_item-color);
2904
+ background: var(--ui-_item-bg);
2905
+ border-radius: var(--ui-_item-radius);
2906
+ transition: background var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease), color var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
3089
2907
  }
3090
- }
3091
- @layer components.tokens {
3092
- .ui-table {
3093
- --ui-_font-size: var(--ui-table-font-size, var(--ui-font-size-sm, 0.875rem));
3094
- --ui-_border-color: var(--ui-table-border-color, var(--ui-color-border, hsl(220, 10%, 90%)));
3095
- --ui-_header-bg: var(--ui-table-header-bg, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
3096
- --ui-_cell-padding-x: var(--ui-table-cell-padding-x, var(--ui-space-2, 1rem));
3097
- --ui-_cell-padding-y: var(--ui-table-cell-padding-y, var(--ui-space-1, 0.5rem));
2908
+ .ui-pagination__link:hover {
2909
+ background: var(--ui-_item-bg-hover);
3098
2910
  }
3099
- .ui-table--compact {
3100
- --ui-_cell-padding-y: var(--ui-space-0, 0.25rem);
3101
- --ui-_cell-padding-x: var(--ui-space-1, 0.5rem);
3102
- --ui-_font-size: var(--ui-font-size-xs, 0.75rem);
2911
+ .ui-pagination__link[aria-current=page],
2912
+ .ui-pagination__link--active {
2913
+ color: var(--ui-_item-color-active);
2914
+ background: var(--ui-_item-bg-active);
2915
+ pointer-events: none;
3103
2916
  }
3104
- }
3105
- @layer components.styles {
3106
- .ui-table {
3107
- inline-size: 100%;
3108
- font-size: var(--ui-_font-size);
3109
- border-collapse: separate;
3110
- border-spacing: 0;
2917
+ .ui-pagination__link[aria-disabled=true],
2918
+ .ui-pagination__link--disabled {
2919
+ opacity: 0.5;
2920
+ pointer-events: none;
3111
2921
  }
3112
- .ui-table th,
3113
- .ui-table td {
3114
- padding-block-start: var(--ui-_cell-padding-y);
3115
- padding-block-end: calc(var(--ui-_cell-padding-y) - var(--ui-border-width-sm, 0.0625rem));
3116
- padding-inline: var(--ui-_cell-padding-x);
3117
- line-height: calc(var(--ui-unit, 0.5rem) * 3);
3118
- text-align: start;
3119
- border-block-end: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
2922
+ .ui-pagination__prev,
2923
+ .ui-pagination__next {
2924
+ display: inline-flex;
2925
+ align-items: center;
2926
+ gap: calc(0.5rem * 0.5);
2927
+ padding-inline: calc(0.5rem * 1.5);
3120
2928
  }
3121
- .ui-table th {
3122
- font-weight: var(--ui-weight-medium, 500);
3123
- background: var(--ui-_header-bg);
2929
+ .ui-pagination__ellipsis {
2930
+ display: inline-flex;
2931
+ align-items: center;
2932
+ justify-content: center;
2933
+ block-size: var(--ui-_item-size);
2934
+ min-inline-size: var(--ui-_item-size);
2935
+ color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
3124
2936
  }
3125
- .ui-table--striped tbody tr:nth-child(odd) {
3126
- background: var(--ui-color-bg-subtle, hsl(220, 10%, 96%));
2937
+ .ui-pagination--sm {
2938
+ --ui-_item-size: calc(0.5rem * 3);
2939
+ --ui-_gap: calc(0.5rem * 0.25);
3127
2940
  }
3128
- .ui-table--striped th {
3129
- background: var(--ui-color-bg-muted, hsl(220, 10%, 90%));
2941
+ .ui-pagination--lg {
2942
+ --ui-_item-size: calc(0.5rem * 5);
2943
+ --ui-_gap: calc(0.5rem * 0.75);
3130
2944
  }
3131
2945
  }
3132
2946
  @layer components.tokens {
@@ -3167,398 +2981,442 @@
3167
2981
  transition: color var(--ui-duration-base) var(--ui-ease-default), box-shadow var(--ui-duration-base) var(--ui-ease-default);
3168
2982
  }
3169
2983
  .ui-tabs__tab:hover {
3170
- color: var(--ui-color-text, hsl(220, 10%, 10%));
3171
- }
3172
- .ui-tabs__tab--active {
3173
- color: var(--ui-color-primary, oklch(55% 0.22 250deg));
3174
- background: var(--ui-_tab-bg-active);
3175
- box-shadow: inset 0 calc(var(--ui-border-width-md, 0.125rem) * -1) 0 var(--ui-color-primary, oklch(55% 0.22 250deg));
3176
- }
3177
- .ui-tabs__panel {
3178
- display: none;
3179
- padding: var(--ui-_panel-padding);
3180
- line-height: var(--ui-row-1, 1rem);
3181
- }
3182
- .ui-tabs__panel--active {
3183
- display: block;
3184
- }
3185
- }
3186
- @layer components.tokens {
3187
- .ui-tag {
3188
- --ui-_height: var(--ui-tag-height, calc(0.5rem * 3));
3189
- --ui-_padding-x: var(--ui-tag-padding-x, var(--ui-space-1, 0.5rem));
3190
- --ui-_gap: var(--ui-tag-gap, calc(0.5rem * 0.5));
3191
- --ui-_radius: var(--ui-tag-radius, var(--ui-radius-full, 9999px));
3192
- --ui-_font-size: var(--ui-tag-font-size, var(--ui-font-size-sm, 0.875rem));
3193
- --ui-_bg: var(--ui-tag-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
3194
- --ui-_color: var(--ui-tag-color, var(--ui-color-text, hsl(220, 10%, 10%)));
3195
- }
3196
- .ui-tag--sm {
3197
- --ui-_height: var(--ui-tag-height-sm, calc(0.5rem * 2.5));
3198
- --ui-_padding-x: var(--ui-tag-padding-x-sm, calc(0.5rem * 1));
3199
- --ui-_font-size: var(--ui-tag-font-size-sm, var(--ui-font-size-xs, 0.75rem));
2984
+ color: var(--ui-color-text, hsl(220, 10%, 10%));
3200
2985
  }
3201
- .ui-tag--primary {
3202
- --ui-_bg: var(--ui-tag-primary-bg, var(--ui-color-primary, oklch(55% 0.22 250deg)));
3203
- --ui-_color: var(--ui-tag-primary-color, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
2986
+ .ui-tabs__tab--active {
2987
+ color: var(--ui-color-primary, oklch(55% 0.22 250deg));
2988
+ background: var(--ui-_tab-bg-active);
2989
+ box-shadow: inset 0 calc(var(--ui-border-width-md, 0.125rem) * -1) 0 var(--ui-color-primary, oklch(55% 0.22 250deg));
3204
2990
  }
3205
- .ui-tag--success {
3206
- --ui-_bg: var(--ui-tag-success-bg, var(--ui-color-success, oklch(60% 0.18 145deg)));
3207
- --ui-_color: var(--ui-tag-success-color, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
2991
+ .ui-tabs__panel {
2992
+ display: none;
2993
+ padding: var(--ui-_panel-padding);
2994
+ line-height: var(--ui-row-1, 1rem);
3208
2995
  }
3209
- .ui-tag--warning {
3210
- --ui-_bg: var(--ui-tag-warning-bg, var(--ui-color-warning, oklch(75% 0.18 70deg)));
3211
- --ui-_color: var(--ui-tag-warning-color, var(--ui-color-text, hsl(220, 10%, 10%)));
2996
+ .ui-tabs__panel--active {
2997
+ display: block;
3212
2998
  }
3213
- .ui-tag--danger {
3214
- --ui-_bg: var(--ui-tag-danger-bg, var(--ui-color-danger, oklch(60% 0.22 25deg)));
3215
- --ui-_color: var(--ui-tag-danger-color, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
2999
+ }
3000
+ @layer components.tokens {
3001
+ .ui-dialog {
3002
+ --ui-_header-padding: var(--ui-dialog-header-padding, calc(0.5rem * 2) calc(0.5rem * 3));
3003
+ --ui-_body-padding: var(--ui-dialog-body-padding, calc(0.5rem * 3));
3004
+ --ui-_footer-padding: var(--ui-dialog-footer-padding, calc(0.5rem * 2) calc(0.5rem * 3));
3005
+ --ui-_border-color: var(--ui-dialog-border-color, var(--ui-color-border, rgb(0 0 0 / 0.1)));
3216
3006
  }
3217
3007
  }
3218
3008
  @layer components.styles {
3219
- .ui-tag {
3220
- display: inline-flex;
3009
+ .ui-dialog .ui-modal__content {
3010
+ padding: 0;
3011
+ }
3012
+ .ui-dialog__header {
3013
+ display: flex;
3014
+ flex-shrink: 0;
3221
3015
  align-items: center;
3222
- gap: var(--ui-_gap);
3223
- block-size: var(--ui-_height);
3224
- padding-inline: var(--ui-_padding-x);
3225
- font-size: var(--ui-_font-size);
3226
- font-weight: var(--ui-weight-medium, 500);
3227
- line-height: 1;
3228
- white-space: nowrap;
3229
- color: var(--ui-_color);
3230
- background: var(--ui-_bg);
3231
- border-radius: var(--ui-_radius);
3016
+ justify-content: space-between;
3017
+ gap: calc(0.5rem * 2);
3018
+ padding: var(--ui-_header-padding);
3019
+ border-block-end: 1px solid var(--ui-_border-color);
3232
3020
  }
3233
- .ui-tag:disabled, .ui-tag[aria-disabled=true] {
3234
- opacity: 0.5;
3235
- cursor: not-allowed;
3021
+ .ui-dialog__title {
3022
+ margin: 0;
3023
+ font-size: var(--ui-font-size-lg, 1.25rem);
3024
+ font-weight: var(--ui-weight-semibold, 600);
3025
+ line-height: calc(0.5rem * 3);
3236
3026
  }
3237
- .ui-tag__remove {
3238
- display: inline-flex;
3027
+ .ui-dialog__close {
3239
3028
  flex-shrink: 0;
3240
- align-items: center;
3241
- justify-content: center;
3242
- padding: 0;
3243
- margin-inline-start: calc(var(--ui-_gap) * -0.5);
3244
- color: currentcolor;
3245
- background: none;
3246
- border: none;
3247
- opacity: 0.7;
3248
- cursor: pointer;
3029
+ margin-inline-start: auto;
3249
3030
  }
3250
- .ui-tag__remove:hover {
3251
- opacity: 1;
3031
+ .ui-dialog__body {
3032
+ flex: 1 1 auto;
3033
+ padding: var(--ui-_body-padding);
3034
+ overflow-y: auto;
3252
3035
  }
3253
- .ui-tag-group {
3036
+ .ui-dialog__footer {
3254
3037
  display: flex;
3255
- flex-wrap: wrap;
3256
- gap: calc(0.5rem * 0.5);
3038
+ flex-shrink: 0;
3039
+ align-items: center;
3040
+ justify-content: flex-end;
3041
+ gap: calc(0.5rem * 1.5);
3042
+ padding: var(--ui-_footer-padding);
3043
+ border-block-start: 1px solid var(--ui-_border-color);
3044
+ }
3045
+ .ui-dialog--borderless .ui-dialog__header {
3046
+ border-block-end: none;
3047
+ }
3048
+ .ui-dialog--borderless .ui-dialog__footer {
3049
+ border-block-start: none;
3257
3050
  }
3258
3051
  }
3259
3052
  @layer components.tokens {
3260
- .ui-textarea {
3261
- --ui-_min-height: var(--ui-textarea-min-height, calc(1rem * 4));
3262
- --ui-_padding-x: var(--ui-textarea-padding-x, var(--ui-space-1, 0.5rem));
3263
- --ui-_padding-y: var(--ui-textarea-padding-y, var(--ui-space-1, 0.5rem));
3264
- --ui-_font-size: var(--ui-textarea-font-size, var(--ui-font-size-sm, 0.875rem));
3265
- --ui-_radius: var(--ui-textarea-radius, var(--ui-radius-md, 0.5rem));
3266
- --ui-_bg: var(--ui-textarea-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
3267
- --ui-_border-color: var(--ui-textarea-border-color, var(--ui-color-border-strong, hsl(220, 10%, 80%)));
3268
- --ui-_border-color-focus: var(--ui-textarea-border-color-focus, var(--ui-color-primary, oklch(55% 0.22 250deg)));
3269
- --ui-_text: var(--ui-textarea-text, var(--ui-color-text, hsl(220, 10%, 10%)));
3270
- --ui-_placeholder: var(--ui-textarea-placeholder, var(--ui-color-text-muted, hsl(220, 10%, 45%)));
3053
+ .ui-drawer {
3054
+ --ui-_size: var(--ui-drawer-size, calc(0.5rem * 40));
3055
+ --ui-_max-size: var(--ui-drawer-max-size, 90%);
3056
+ --ui-_bg: var(--ui-drawer-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
3057
+ --ui-_shadow: var(--ui-drawer-shadow, var(--ui-shadow-lg));
3058
+ --ui-_header-padding: var(--ui-drawer-header-padding, calc(0.5rem * 2) calc(0.5rem * 3));
3059
+ --ui-_body-padding: var(--ui-drawer-body-padding, calc(0.5rem * 3));
3060
+ --ui-_footer-padding: var(--ui-drawer-footer-padding, calc(0.5rem * 2) calc(0.5rem * 3));
3061
+ --ui-_border-color: var(--ui-drawer-border-color, var(--ui-color-border, hsl(220, 10%, 90%)));
3271
3062
  }
3272
- .ui-textarea--sm {
3273
- --ui-_min-height: var(--ui-textarea-min-height-sm, calc(1rem * 3));
3274
- --ui-_font-size: var(--ui-textarea-font-size-sm, var(--ui-font-size-xs, 0.75rem));
3063
+ .ui-drawer--sm {
3064
+ --ui-_size: calc(0.5rem * 30);
3275
3065
  }
3276
- .ui-textarea--lg {
3277
- --ui-_min-height: var(--ui-textarea-min-height-lg, calc(1rem * 6));
3278
- --ui-_padding-x: var(--ui-textarea-padding-x-lg, var(--ui-space-2, 1rem));
3279
- --ui-_padding-y: var(--ui-textarea-padding-y-lg, var(--ui-space-2, 1rem));
3280
- --ui-_font-size: var(--ui-textarea-font-size-lg, var(--ui-font-size-md, 1rem));
3066
+ .ui-drawer--lg {
3067
+ --ui-_size: calc(0.5rem * 50);
3281
3068
  }
3282
- .ui-textarea--filled {
3283
- --ui-_bg: var(--ui-textarea-filled-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
3284
- --ui-_border-color: transparent;
3069
+ .ui-drawer--full {
3070
+ --ui-_size: 100%;
3071
+ --ui-_max-size: 100%;
3285
3072
  }
3286
- .ui-textarea--ghost {
3287
- --ui-_bg: transparent;
3288
- --ui-_border-color: transparent;
3073
+ }
3074
+ @layer components.styles {
3075
+ .ui-drawer-overlay {
3076
+ position: fixed;
3077
+ inset: 0;
3078
+ z-index: var(--ui-z-drawer, 900);
3079
+ background: var(--ui-overlay-bg, rgba(0, 0, 0, 0.5));
3289
3080
  }
3290
- .ui-textarea--error {
3291
- --ui-_border-color: var(--ui-textarea-error-border, var(--ui-color-danger, oklch(60% 0.22 25deg)));
3292
- --ui-_border-color-focus: var(--ui-textarea-error-border, var(--ui-color-danger, oklch(60% 0.22 25deg)));
3081
+ .ui-drawer-overlay[data-state=open] {
3082
+ animation: drawer-overlay-in var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
3293
3083
  }
3294
- .ui-textarea--success {
3295
- --ui-_border-color: var(--ui-textarea-success-border, var(--ui-color-success, oklch(60% 0.18 145deg)));
3296
- --ui-_border-color-focus: var(--ui-textarea-success-border, var(--ui-color-success, oklch(60% 0.18 145deg)));
3084
+ .ui-drawer-overlay[data-state=closed] {
3085
+ animation: drawer-overlay-out var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
3297
3086
  }
3298
- }
3299
- @layer components.styles {
3300
- .ui-textarea {
3301
- display: block;
3302
- box-sizing: border-box;
3303
- inline-size: 100%;
3304
- min-block-size: var(--ui-_min-height);
3305
- padding-block: var(--ui-_padding-y);
3306
- padding-inline: var(--ui-_padding-x);
3307
- font-family: inherit;
3308
- font-size: var(--ui-_font-size);
3309
- line-height: var(--ui-row-1, 1rem);
3310
- color: var(--ui-_text);
3311
- background: var(--ui-_bg);
3312
- border: none;
3313
- border-radius: var(--ui-_radius);
3314
- outline: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
3315
- transition: border-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), box-shadow var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
3316
- outline-offset: calc(var(--ui-border-width-sm, 0.0625rem) * -1);
3317
- resize: vertical;
3087
+ @keyframes drawer-overlay-in {
3088
+ from {
3089
+ opacity: 0;
3090
+ }
3318
3091
  }
3319
- .ui-textarea::placeholder {
3320
- color: var(--ui-_placeholder);
3092
+ @keyframes drawer-overlay-out {
3093
+ to {
3094
+ opacity: 0;
3095
+ }
3321
3096
  }
3322
- .ui-textarea:hover:not(:disabled, :focus) {
3323
- outline-color: var(--ui-color-border-strong, hsl(220, 10%, 80%));
3097
+ .ui-drawer {
3098
+ display: flex;
3099
+ flex-direction: column;
3100
+ position: fixed;
3101
+ z-index: var(--ui-z-drawer, 900);
3102
+ background: var(--ui-_bg);
3103
+ box-shadow: var(--ui-_shadow);
3324
3104
  }
3325
- .ui-textarea:focus, .ui-textarea--focus {
3326
- outline-color: var(--ui-_border-color-focus);
3327
- box-shadow: 0 0 0 var(--ui-border-width-md, 0.125rem) var(--ui-color-focus, oklch(75% 0.15 250deg));
3105
+ .ui-drawer--end {
3106
+ inset-block: 0;
3107
+ inset-inline-end: 0;
3108
+ inline-size: var(--ui-_size);
3109
+ max-inline-size: var(--ui-_max-size);
3110
+ box-shadow: calc(var(--ui-border-width-sm, 1px) * -1) 0 0 var(--ui-_border-color);
3328
3111
  }
3329
- .ui-textarea:disabled, .ui-textarea--disabled {
3330
- opacity: 0.5;
3331
- cursor: not-allowed;
3332
- resize: none;
3112
+ .ui-drawer--start {
3113
+ inset-block: 0;
3114
+ inset-inline-start: 0;
3115
+ inline-size: var(--ui-_size);
3116
+ max-inline-size: var(--ui-_max-size);
3117
+ box-shadow: var(--ui-border-width-sm, 1px) 0 0 var(--ui-_border-color);
3333
3118
  }
3334
- .ui-textarea:read-only {
3335
- background: var(--ui-color-bg-subtle, hsl(220, 10%, 96%));
3336
- resize: none;
3119
+ .ui-drawer--top {
3120
+ inset-block-start: 0;
3121
+ inset-inline: 0;
3122
+ block-size: var(--ui-_size);
3123
+ max-block-size: var(--ui-_max-size);
3124
+ box-shadow: 0 var(--ui-border-width-sm, 1px) 0 var(--ui-_border-color);
3337
3125
  }
3338
- .ui-textarea--resize-none {
3339
- resize: none;
3126
+ .ui-drawer--bottom {
3127
+ inset-block-end: 0;
3128
+ inset-inline: 0;
3129
+ block-size: var(--ui-_size);
3130
+ max-block-size: var(--ui-_max-size);
3131
+ box-shadow: 0 calc(var(--ui-border-width-sm, 1px) * -1) 0 var(--ui-_border-color);
3340
3132
  }
3341
- .ui-textarea--resize-horizontal {
3342
- resize: horizontal;
3133
+ .ui-drawer--end[data-state=open] {
3134
+ animation: drawer-slide-in-end var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
3343
3135
  }
3344
- .ui-textarea--resize-both {
3345
- resize: both;
3136
+ .ui-drawer--end[data-state=closed] {
3137
+ animation: drawer-slide-out-end var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
3346
3138
  }
3347
- }
3348
- @layer components.tokens {
3349
- .ui-toast-viewport {
3350
- --ui-_gap: var(--ui-toast-viewport-gap, calc(0.5rem * 1));
3351
- --ui-_padding: var(--ui-toast-viewport-padding, calc(0.5rem * 2));
3352
- --ui-_max-width: var(--ui-toast-viewport-max-width, 420px);
3139
+ .ui-drawer--start[data-state=open] {
3140
+ animation: drawer-slide-in-start var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
3353
3141
  }
3354
- .ui-toast {
3355
- --ui-_padding: var(--ui-toast-padding, calc(0.5rem * 2));
3356
- --ui-_gap: var(--ui-toast-gap, calc(0.5rem * 1));
3357
- --ui-_radius: var(--ui-toast-radius, var(--ui-radius-md, 0.5rem));
3358
- --ui-_bg: var(--ui-toast-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
3359
- --ui-_border-color: var(--ui-toast-border-color, var(--ui-color-border, hsl(220, 10%, 90%)));
3360
- --ui-_shadow: var(--ui-toast-shadow, var(--ui-shadow-lg));
3142
+ .ui-drawer--start[data-state=closed] {
3143
+ animation: drawer-slide-out-start var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
3144
+ }
3145
+ .ui-drawer--top[data-state=open] {
3146
+ animation: drawer-slide-in-top var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
3361
3147
  }
3362
- .ui-toast--success {
3363
- --ui-_border-color: var(--ui-color-success);
3148
+ .ui-drawer--top[data-state=closed] {
3149
+ animation: drawer-slide-out-top var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
3364
3150
  }
3365
- .ui-toast--warning {
3366
- --ui-_border-color: var(--ui-color-warning);
3151
+ .ui-drawer--bottom[data-state=open] {
3152
+ animation: drawer-slide-in-bottom var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
3367
3153
  }
3368
- .ui-toast--danger {
3369
- --ui-_border-color: var(--ui-color-danger);
3154
+ .ui-drawer--bottom[data-state=closed] {
3155
+ animation: drawer-slide-out-bottom var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
3370
3156
  }
3371
- .ui-toast--info {
3372
- --ui-_border-color: var(--ui-color-primary);
3157
+ @keyframes drawer-slide-in-end {
3158
+ from {
3159
+ transform: translateX(100%);
3160
+ }
3373
3161
  }
3374
- }
3375
- @layer components.styles {
3376
- .ui-toast-viewport {
3377
- display: flex;
3378
- flex-direction: column;
3379
- gap: var(--ui-_gap);
3380
- position: fixed;
3381
- z-index: var(--ui-z-toast, 1000);
3382
- max-inline-size: var(--ui-_max-width);
3383
- padding: var(--ui-_padding);
3384
- pointer-events: none;
3385
- list-style: none;
3162
+ @keyframes drawer-slide-out-end {
3163
+ to {
3164
+ transform: translateX(100%);
3165
+ }
3386
3166
  }
3387
- .ui-toast-viewport--top-end {
3388
- inset-block-start: 0;
3389
- inset-inline-end: 0;
3167
+ @keyframes drawer-slide-in-start {
3168
+ from {
3169
+ transform: translateX(-100%);
3170
+ }
3390
3171
  }
3391
- .ui-toast-viewport--top-start {
3392
- inset-block-start: 0;
3393
- inset-inline-start: 0;
3172
+ @keyframes drawer-slide-out-start {
3173
+ to {
3174
+ transform: translateX(-100%);
3175
+ }
3394
3176
  }
3395
- .ui-toast-viewport--bottom-end {
3396
- inset-block-end: 0;
3397
- inset-inline-end: 0;
3177
+ @keyframes drawer-slide-in-top {
3178
+ from {
3179
+ transform: translateY(-100%);
3180
+ }
3398
3181
  }
3399
- .ui-toast-viewport--bottom-start {
3400
- inset-block-end: 0;
3401
- inset-inline-start: 0;
3182
+ @keyframes drawer-slide-out-top {
3183
+ to {
3184
+ transform: translateY(-100%);
3185
+ }
3402
3186
  }
3403
- .ui-toast-viewport--top-center {
3404
- inset-block-start: 0;
3405
- inset-inline-start: 50%;
3406
- transform: translateX(-50%);
3187
+ @keyframes drawer-slide-in-bottom {
3188
+ from {
3189
+ transform: translateY(100%);
3190
+ }
3407
3191
  }
3408
- .ui-toast-viewport--bottom-center {
3409
- inset-block-end: 0;
3410
- inset-inline-start: 50%;
3411
- transform: translateX(-50%);
3192
+ @keyframes drawer-slide-out-bottom {
3193
+ to {
3194
+ transform: translateY(100%);
3195
+ }
3412
3196
  }
3413
- .ui-toast {
3197
+ .ui-drawer__header {
3414
3198
  display: flex;
3415
- align-items: flex-start;
3416
- gap: var(--ui-_gap);
3417
- padding: var(--ui-_padding);
3418
- background: var(--ui-_bg);
3419
- border-radius: var(--ui-_radius);
3420
- outline: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
3421
- box-shadow: var(--ui-_shadow);
3422
- pointer-events: auto;
3423
- outline-offset: calc(var(--ui-border-width-sm, 0.0625rem) * -1);
3424
- }
3425
- .ui-toast__icon {
3426
3199
  flex-shrink: 0;
3200
+ align-items: center;
3201
+ justify-content: space-between;
3202
+ gap: calc(0.5rem * 2);
3203
+ padding: var(--ui-_header-padding);
3204
+ box-shadow: inset 0 calc(var(--ui-border-width-sm, 1px) * -1) 0 var(--ui-_border-color);
3427
3205
  }
3428
- .ui-toast__content {
3429
- flex: 1;
3430
- min-inline-size: 0;
3431
- }
3432
- .ui-toast__title {
3206
+ .ui-drawer__title {
3433
3207
  margin: 0;
3434
- font-weight: var(--ui-weight-medium, 500);
3208
+ font-size: var(--ui-font-size-lg, 1.25rem);
3209
+ font-weight: var(--ui-weight-semibold, 600);
3435
3210
  line-height: var(--ui-row-1, 1rem);
3436
3211
  }
3437
- .ui-toast__description {
3212
+ .ui-drawer__description {
3438
3213
  margin: 0;
3439
3214
  font-size: var(--ui-font-size-sm, 0.875rem);
3440
3215
  line-height: var(--ui-row-1, 1rem);
3441
3216
  color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
3442
3217
  }
3443
- .ui-toast__action {
3218
+ .ui-drawer__close {
3444
3219
  flex-shrink: 0;
3220
+ margin-inline-start: auto;
3445
3221
  }
3446
- .ui-toast__close {
3447
- display: inline-flex;
3222
+ .ui-drawer__body {
3223
+ flex: 1 1 auto;
3224
+ padding: var(--ui-_body-padding);
3225
+ overflow-y: auto;
3226
+ line-height: var(--ui-row-1, 1rem);
3227
+ }
3228
+ .ui-drawer__footer {
3229
+ display: flex;
3448
3230
  flex-shrink: 0;
3449
3231
  align-items: center;
3232
+ justify-content: flex-end;
3233
+ gap: calc(0.5rem * 2);
3234
+ padding: var(--ui-_footer-padding);
3235
+ box-shadow: inset 0 var(--ui-border-width-sm, 1px) 0 var(--ui-_border-color);
3236
+ }
3237
+ }
3238
+ @layer components.tokens {
3239
+ .ui-modal {
3240
+ --ui-_bg: var(--ui-modal-bg, var(--ui-color-bg, white));
3241
+ --ui-_radius: var(--ui-modal-radius, var(--ui-radius-lg, calc(0.5rem * 1.5)));
3242
+ --ui-_shadow: var(--ui-modal-shadow, 0 calc(0.5rem * 3) calc(0.5rem * 6) rgb(0 0 0 / 0.25));
3243
+ --ui-_padding: var(--ui-modal-padding, calc(0.5rem * 3));
3244
+ --ui-_max-width: var(--ui-modal-max-width, calc(0.5rem * 60));
3245
+ --ui-_max-height: var(--ui-modal-max-height, calc(100vh - 0.5rem * 8));
3246
+ --ui-_z: var(--ui-modal-z, var(--ui-z-modal, 400));
3247
+ }
3248
+ .ui-modal--sm {
3249
+ --ui-_max-width: var(--ui-modal-max-width-sm, calc(0.5rem * 40));
3250
+ }
3251
+ .ui-modal--lg {
3252
+ --ui-_max-width: var(--ui-modal-max-width-lg, calc(0.5rem * 80));
3253
+ }
3254
+ .ui-modal--full {
3255
+ --ui-_max-width: calc(100vw - 0.5rem * 4);
3256
+ --ui-_max-height: calc(100vh - 0.5rem * 4);
3257
+ --ui-_radius: 0;
3258
+ }
3259
+ }
3260
+ @layer components.styles {
3261
+ .ui-modal {
3262
+ display: flex;
3263
+ align-items: center;
3450
3264
  justify-content: center;
3451
- block-size: var(--ui-row-1, 1rem);
3452
- inline-size: var(--ui-row-1, 1rem);
3453
- padding: 0;
3454
- color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
3455
- background: none;
3456
- border: none;
3457
- cursor: pointer;
3265
+ position: fixed;
3266
+ inset: 0;
3267
+ z-index: var(--ui-_z);
3268
+ padding: calc(0.5rem * 2);
3458
3269
  }
3459
- .ui-toast__close:hover {
3460
- color: var(--ui-color-text, hsl(220, 10%, 10%));
3270
+ .ui-modal__content {
3271
+ display: flex;
3272
+ flex-direction: column;
3273
+ position: relative;
3274
+ inline-size: 100%;
3275
+ max-block-size: var(--ui-_max-height);
3276
+ max-inline-size: var(--ui-_max-width);
3277
+ padding: var(--ui-_padding);
3278
+ overflow: hidden;
3279
+ background: var(--ui-_bg);
3280
+ border-radius: var(--ui-_radius);
3281
+ box-shadow: var(--ui-_shadow);
3461
3282
  }
3462
- .ui-toast[data-state=open] {
3463
- animation: toast-slide-in var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
3283
+ .ui-modal__body {
3284
+ flex: 1 1 auto;
3285
+ overflow-y: auto;
3464
3286
  }
3465
- .ui-toast[data-state=closed] {
3466
- animation: toast-slide-out var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
3287
+ .ui-modal--entering .ui-modal__content,
3288
+ .ui-modal--visible .ui-modal__content {
3289
+ opacity: 1;
3290
+ transform: scale(1);
3467
3291
  }
3468
- @keyframes toast-slide-in {
3469
- from {
3470
- opacity: 0;
3471
- transform: translateX(100%);
3472
- }
3292
+ .ui-modal--exiting .ui-modal__content,
3293
+ .ui-modal--hidden .ui-modal__content {
3294
+ opacity: 0;
3295
+ transform: scale(0.95);
3473
3296
  }
3474
- @keyframes toast-slide-out {
3475
- to {
3476
- opacity: 0;
3477
- transform: translateX(100%);
3478
- }
3297
+ .ui-modal--animate .ui-modal__content {
3298
+ transition: opacity var(--ui-duration-normal, 200ms) var(--ui-ease-default, ease), transform var(--ui-duration-normal, 200ms) var(--ui-ease-default, ease);
3299
+ }
3300
+ .ui-modal--hidden {
3301
+ visibility: hidden;
3302
+ pointer-events: none;
3479
3303
  }
3480
3304
  }
3481
3305
  @layer components.tokens {
3482
- .ui-toggle {
3483
- --ui-_track-width: var(--ui-toggle-track-width, calc(0.5rem * 5));
3484
- --ui-_track-height: var(--ui-toggle-track-height, calc(0.5rem * 3));
3485
- --ui-_track-bg: var(--ui-toggle-track-bg, var(--ui-color-bg-subtle, rgb(0 0 0 / 0.1)));
3486
- --ui-_track-bg-checked: var(--ui-toggle-track-bg-checked, var(--ui-color-primary));
3487
- --ui-_track-radius: var(--ui-toggle-track-radius, calc(0.5rem * 1.5));
3488
- --ui-_thumb-size: var(--ui-toggle-thumb-size, calc(0.5rem * 2.5));
3489
- --ui-_thumb-bg: var(--ui-toggle-thumb-bg, white);
3490
- --ui-_thumb-offset: var(--ui-toggle-thumb-offset, calc(0.5rem / 4));
3306
+ .ui-overlay {
3307
+ --ui-_bg: var(--ui-overlay-bg, rgb(0 0 0 / 0.5));
3308
+ --ui-_z: var(--ui-overlay-z, var(--ui-z-overlay, 300));
3491
3309
  }
3492
- .ui-toggle--sm {
3493
- --ui-_track-width: calc(0.5rem * 4);
3494
- --ui-_track-height: calc(0.5rem * 2);
3495
- --ui-_track-radius: 0.5rem;
3496
- --ui-_thumb-size: calc(0.5rem * 1.5);
3310
+ .ui-overlay--light {
3311
+ --ui-_bg: var(--ui-overlay-bg-light, rgb(255 255 255 / 0.7));
3497
3312
  }
3498
- .ui-toggle--lg {
3499
- --ui-_track-width: calc(0.5rem * 6);
3500
- --ui-_track-height: calc(0.5rem * 4);
3501
- --ui-_track-radius: calc(0.5rem * 2);
3502
- --ui-_thumb-size: calc(0.5rem * 3.5);
3313
+ .ui-overlay--blur {
3314
+ --ui-_bg: var(--ui-overlay-bg-blur, rgb(0 0 0 / 0.3));
3315
+ }
3316
+ }
3317
+ @layer components.styles {
3318
+ .ui-overlay {
3319
+ position: fixed;
3320
+ inset: 0;
3321
+ z-index: var(--ui-_z);
3322
+ background: var(--ui-_bg);
3323
+ }
3324
+ .ui-overlay--blur {
3325
+ backdrop-filter: blur(calc(0.5rem * 0.5));
3326
+ }
3327
+ .ui-overlay--entering,
3328
+ .ui-overlay--visible {
3329
+ opacity: 1;
3330
+ }
3331
+ .ui-overlay--exiting,
3332
+ .ui-overlay--hidden {
3333
+ opacity: 0;
3334
+ pointer-events: none;
3335
+ }
3336
+ .ui-overlay--animate {
3337
+ transition: opacity var(--ui-duration-normal, 200ms) var(--ui-ease-default, ease);
3503
3338
  }
3504
3339
  }
3505
- @layer components.styles {
3506
- .ui-toggle {
3507
- display: inline-flex;
3508
- flex-shrink: 0;
3509
- align-items: center;
3510
- position: relative;
3511
- block-size: var(--ui-_track-height);
3512
- inline-size: var(--ui-_track-width);
3513
- background: var(--ui-_track-bg);
3514
- border-radius: var(--ui-_track-radius);
3515
- cursor: pointer;
3516
- transition: background var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
3340
+ @layer components.tokens {
3341
+ .ui-popover {
3342
+ --ui-_bg: var(--ui-popover-bg, var(--ui-color-bg, white));
3343
+ --ui-_border-color: var(--ui-popover-border-color, var(--ui-color-border, rgb(0 0 0 / 0.1)));
3344
+ --ui-_radius: var(--ui-popover-radius, var(--ui-radius-md, calc(0.5rem * 1)));
3345
+ --ui-_shadow: var(--ui-popover-shadow, 0 calc(0.5rem / 2) calc(0.5rem * 2) rgb(0 0 0 / 0.15));
3346
+ --ui-_padding: var(--ui-popover-padding, calc(0.5rem * 2));
3347
+ --ui-_max-width: var(--ui-popover-max-width, calc(0.5rem * 40));
3348
+ --ui-_z: var(--ui-popover-z, var(--ui-z-popover, 500));
3349
+ --ui-_arrow-size: var(--ui-popover-arrow-size, calc(0.5rem));
3517
3350
  }
3518
- .ui-toggle__input {
3351
+ }
3352
+ @layer components.styles {
3353
+ .ui-popover {
3519
3354
  position: absolute;
3520
- inset: 0;
3521
- block-size: 100%;
3522
- inline-size: 100%;
3355
+ z-index: var(--ui-_z);
3356
+ max-inline-size: var(--ui-_max-width);
3357
+ padding: var(--ui-_padding);
3358
+ line-height: var(--ui-row-1, 1rem);
3359
+ background: var(--ui-_bg);
3360
+ border-radius: var(--ui-_radius);
3361
+ outline: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
3362
+ box-shadow: var(--ui-_shadow);
3363
+ outline-offset: calc(var(--ui-border-width-sm, 0.0625rem) * -1);
3364
+ }
3365
+ .ui-popover__header {
3366
+ padding-block-end: calc(0.5rem * 2);
3367
+ margin-block-end: calc(0.5rem * 2);
3368
+ box-shadow: inset 0 calc(var(--ui-border-width-sm, 1px) * -1) 0 var(--ui-_border-color);
3369
+ }
3370
+ .ui-popover__title {
3523
3371
  margin: 0;
3524
- opacity: 0;
3525
- cursor: pointer;
3372
+ font-size: var(--ui-font-size-md, 1rem);
3373
+ font-weight: var(--ui-weight-semibold, 600);
3526
3374
  }
3527
- .ui-toggle__track {
3375
+ .ui-popover--top::after {
3376
+ content: "";
3528
3377
  position: absolute;
3529
- inset: 0;
3530
- background: var(--ui-_track-bg);
3531
- border-radius: var(--ui-_track-radius);
3532
- transition: background var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
3378
+ inset-block-start: 100%;
3379
+ inset-inline-start: 50%;
3380
+ border: var(--ui-_arrow-size) solid transparent;
3381
+ border-block-start-color: var(--ui-_bg);
3382
+ transform: translateX(-50%);
3533
3383
  }
3534
- .ui-toggle__thumb {
3384
+ .ui-popover--top::before {
3385
+ content: "";
3535
3386
  position: absolute;
3536
- inset-block-start: var(--ui-_thumb-offset);
3537
- inset-inline-start: var(--ui-_thumb-offset);
3538
- block-size: var(--ui-_thumb-size);
3539
- inline-size: var(--ui-_thumb-size);
3540
- background: var(--ui-_thumb-bg);
3541
- border-radius: 50%;
3542
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
3543
- transition: transform var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
3387
+ inset-block-start: 100%;
3388
+ inset-inline-start: 50%;
3389
+ border: calc(var(--ui-_arrow-size) + 1px) solid transparent;
3390
+ border-block-start-color: var(--ui-_border-color);
3391
+ transform: translateX(-50%);
3544
3392
  }
3545
- .ui-toggle__input:checked ~ .ui-toggle__track {
3546
- background: var(--ui-_track-bg-checked);
3393
+ .ui-popover--bottom::after {
3394
+ content: "";
3395
+ position: absolute;
3396
+ inset-block-end: 100%;
3397
+ inset-inline-start: 50%;
3398
+ border: var(--ui-_arrow-size) solid transparent;
3399
+ border-block-end-color: var(--ui-_bg);
3400
+ transform: translateX(-50%);
3547
3401
  }
3548
- .ui-toggle__input:checked ~ .ui-toggle__thumb {
3549
- transform: translateX(calc(var(--ui-_track-width) - var(--ui-_thumb-size) - var(--ui-_thumb-offset) * 2));
3402
+ .ui-popover--bottom::before {
3403
+ content: "";
3404
+ position: absolute;
3405
+ inset-block-end: 100%;
3406
+ inset-inline-start: 50%;
3407
+ border: calc(var(--ui-_arrow-size) + 1px) solid transparent;
3408
+ border-block-end-color: var(--ui-_border-color);
3409
+ transform: translateX(-50%);
3550
3410
  }
3551
- .ui-toggle__input:focus-visible ~ .ui-toggle__track {
3552
- outline: 2px solid var(--ui-color-focus, var(--ui-color-primary));
3553
- outline-offset: calc(0.5rem / 4);
3411
+ .ui-popover--visible {
3412
+ opacity: 1;
3554
3413
  }
3555
- .ui-toggle__input:disabled ~ .ui-toggle__track,
3556
- .ui-toggle__input:disabled ~ .ui-toggle__thumb {
3557
- opacity: 0.5;
3558
- cursor: not-allowed;
3414
+ .ui-popover--hidden {
3415
+ opacity: 0;
3416
+ pointer-events: none;
3559
3417
  }
3560
- .ui-toggle:has(.ui-toggle__input:disabled) {
3561
- cursor: not-allowed;
3418
+ .ui-popover--animate {
3419
+ transition: opacity var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
3562
3420
  }
3563
3421
  }
3564
3422
  @layer components.tokens {
@@ -3634,6 +3492,148 @@
3634
3492
  transition: opacity var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
3635
3493
  }
3636
3494
  }
3495
+ @layer components.tokens {
3496
+ .ui-code {
3497
+ --ui-_font-size: var(--ui-code-font-size, var(--ui-font-size-sm, 0.875rem));
3498
+ --ui-_bg: var(--ui-code-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
3499
+ --ui-_padding-x: var(--ui-code-padding-x, var(--ui-space-1, 0.5rem));
3500
+ --ui-_padding-y: var(--ui-code-padding-y, var(--ui-space-0, 0.25rem));
3501
+ --ui-_radius: var(--ui-code-radius, var(--ui-radius-sm, 0.25rem));
3502
+ }
3503
+ .ui-code--sm {
3504
+ --ui-_font-size: var(--ui-font-size-xs, 0.75rem);
3505
+ }
3506
+ .ui-code-block {
3507
+ --ui-_font-size: var(--ui-code-font-size-block, var(--ui-font-size-sm, 0.875rem));
3508
+ --ui-_bg: var(--ui-code-bg-block, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
3509
+ --ui-_padding: var(--ui-code-padding-block, var(--ui-space-3, 1.5rem));
3510
+ --ui-_radius: var(--ui-code-radius-block, var(--ui-radius-md, 0.5rem));
3511
+ --ui-_border-color: var(--ui-code-border-color-block, var(--ui-color-border, hsl(220, 10%, 90%)));
3512
+ }
3513
+ }
3514
+ @layer components.styles {
3515
+ .ui-code {
3516
+ padding: var(--ui-_padding-y) var(--ui-_padding-x);
3517
+ font-family: var(--ui-font-mono, Noto Sans Mono, ui-monospace, Cascadia Code, monospace);
3518
+ font-size: var(--ui-_font-size);
3519
+ line-height: var(--ui-leading-tight-sm, 1rem);
3520
+ background: var(--ui-_bg);
3521
+ border-radius: var(--ui-_radius);
3522
+ }
3523
+ .ui-code-block {
3524
+ display: block;
3525
+ padding: calc(var(--ui-_padding) - var(--ui-border-width-sm, 0.0625rem));
3526
+ overflow-x: auto;
3527
+ font-family: var(--ui-font-mono, Noto Sans Mono, ui-monospace, Cascadia Code, monospace);
3528
+ font-size: var(--ui-_font-size);
3529
+ line-height: var(--ui-leading-tight-sm, 1rem);
3530
+ white-space: pre;
3531
+ background: var(--ui-_bg);
3532
+ border: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
3533
+ border-radius: var(--ui-_radius);
3534
+ }
3535
+ .ui-code-block code {
3536
+ padding: 0;
3537
+ font-size: inherit;
3538
+ background: none;
3539
+ }
3540
+ }
3541
+ @layer components.tokens {
3542
+ .ui-heading {
3543
+ --ui-_font-size: var(--ui-heading-font-size, var(--ui-font-size-xl, 1.5rem));
3544
+ --ui-_line-height: var(--ui-heading-line-height, var(--ui-leading-xl, 2rem));
3545
+ --ui-_weight: var(--ui-heading-weight, var(--ui-weight-bold, 700));
3546
+ --ui-_color: var(--ui-heading-color, var(--ui-color-text, hsl(220, 10%, 10%)));
3547
+ }
3548
+ .ui-heading--4xl {
3549
+ --ui-_font-size: var(--ui-heading-font-size-4xl, var(--ui-font-size-4xl, 2.5rem));
3550
+ --ui-_line-height: var(--ui-heading-line-height-4xl, var(--ui-leading-4xl, 3rem));
3551
+ }
3552
+ .ui-heading--3xl {
3553
+ --ui-_font-size: var(--ui-heading-font-size-3xl, var(--ui-font-size-3xl, 2rem));
3554
+ --ui-_line-height: var(--ui-heading-line-height-3xl, var(--ui-leading-3xl, 2.5rem));
3555
+ }
3556
+ .ui-heading--2xl {
3557
+ --ui-_font-size: var(--ui-heading-font-size-2xl, var(--ui-font-size-2xl, 1.75rem));
3558
+ --ui-_line-height: var(--ui-heading-line-height-2xl, var(--ui-leading-2xl, 2rem));
3559
+ }
3560
+ .ui-heading--xl {
3561
+ --ui-_font-size: var(--ui-heading-font-size-xl, var(--ui-font-size-xl, 1.5rem));
3562
+ --ui-_line-height: var(--ui-heading-line-height-xl, var(--ui-leading-xl, 2rem));
3563
+ }
3564
+ .ui-heading--lg {
3565
+ --ui-_font-size: var(--ui-heading-font-size-lg, var(--ui-font-size-lg, 1.25rem));
3566
+ --ui-_line-height: var(--ui-heading-line-height-lg, var(--ui-leading-lg, 2rem));
3567
+ }
3568
+ .ui-heading--md {
3569
+ --ui-_font-size: var(--ui-heading-font-size-md, var(--ui-font-size-md, 1rem));
3570
+ --ui-_line-height: var(--ui-heading-line-height-md, var(--ui-leading-tight-md, 1.5rem));
3571
+ }
3572
+ .ui-heading--sm {
3573
+ --ui-_font-size: var(--ui-heading-font-size-sm, var(--ui-font-size-sm, 0.875rem));
3574
+ --ui-_line-height: var(--ui-heading-line-height-sm, var(--ui-leading-tight-sm, 1rem));
3575
+ }
3576
+ }
3577
+ @layer components.styles {
3578
+ .ui-heading {
3579
+ margin: 0;
3580
+ font-size: var(--ui-_font-size);
3581
+ font-weight: var(--ui-_weight);
3582
+ line-height: var(--ui-_line-height);
3583
+ color: var(--ui-_color);
3584
+ }
3585
+ }
3586
+ @layer components.tokens {
3587
+ .ui-link {
3588
+ --ui-_color: var(--ui-link-color, var(--ui-color-primary));
3589
+ --ui-_color-hover: var(--ui-link-color-hover, var(--ui-color-primary-hover, color-mix(in srgb, var(--ui-_color) 85%, black)));
3590
+ --ui-_color-visited: var(--ui-link-color-visited, var(--ui-_color));
3591
+ --ui-_decoration: var(--ui-link-decoration, underline);
3592
+ --ui-_decoration-hover: var(--ui-link-decoration-hover, underline);
3593
+ }
3594
+ .ui-link--muted {
3595
+ --ui-_color: var(--ui-link-color-muted, var(--ui-color-text-muted));
3596
+ --ui-_color-hover: var(--ui-link-color-muted-hover, var(--ui-color-text));
3597
+ }
3598
+ .ui-link--subtle {
3599
+ --ui-_decoration: none;
3600
+ --ui-_decoration-hover: underline;
3601
+ }
3602
+ }
3603
+ @layer components.styles {
3604
+ .ui-link {
3605
+ text-decoration: var(--ui-_decoration);
3606
+ color: var(--ui-_color);
3607
+ cursor: pointer;
3608
+ transition: color var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
3609
+ text-underline-offset: calc(0.5rem / 4);
3610
+ }
3611
+ .ui-link:hover {
3612
+ text-decoration: var(--ui-_decoration-hover);
3613
+ color: var(--ui-_color-hover);
3614
+ }
3615
+ .ui-link:focus-visible {
3616
+ border-radius: calc(0.5rem / 4);
3617
+ outline: 2px solid var(--ui-color-focus, var(--ui-color-primary));
3618
+ outline-offset: calc(0.5rem / 4);
3619
+ }
3620
+ .ui-link:visited {
3621
+ color: var(--ui-_color-visited);
3622
+ }
3623
+ .ui-link--disabled,
3624
+ .ui-link[aria-disabled=true] {
3625
+ color: var(--ui-color-text-muted);
3626
+ opacity: 0.6;
3627
+ cursor: not-allowed;
3628
+ pointer-events: none;
3629
+ }
3630
+ .ui-link--external::after {
3631
+ content: "↗";
3632
+ display: inline-block;
3633
+ margin-inline-start: calc(0.5rem / 4);
3634
+ font-size: 0.75em;
3635
+ }
3636
+ }
3637
3637
  /* 05. Utilities (high specificity, load last) */
3638
3638
  /* Spacing utilities - all values align to 8px grid */
3639
3639
  /* Uses logical properties for international/RTL support */
@@ -4485,14 +4485,13 @@
4485
4485
  }
4486
4486
  }
4487
4487
  /* 99. Debug tools (dev only) */
4488
- /* Debug grid overlay - add class="debug-grid" to body or any container */
4489
4488
  .ui-debug-grid,
4490
4489
  .ui-debug-grid-rows,
4491
4490
  .ui-debug-baseline {
4492
4491
  position: relative;
4493
4492
  }
4494
4493
  .ui-debug-grid {
4495
- --ui-debug-color: hsl(var(--ui-hue-primary) 80% 50% / 0.15);
4494
+ --ui-debug-color: hsl(var(--ui-hue-primary, 220) 80% 50% / 0.15);
4496
4495
  }
4497
4496
  .ui-debug-grid::after {
4498
4497
  content: "";
@@ -4508,10 +4507,9 @@
4508
4507
  background-size: var(--ui-unit) var(--ui-unit);
4509
4508
  background-position: 0 0;
4510
4509
  }
4511
- /* Stronger grid at row intervals (16px) */
4512
4510
  .ui-debug-grid-rows {
4513
- --ui-debug-color: hsl(var(--ui-hue-primary) 80% 50% / 0.1);
4514
- --ui-debug-color-strong: hsl(var(--ui-hue-primary) 80% 50% / 0.25);
4511
+ --ui-debug-color: hsl(var(--ui-hue-primary, 220) 80% 50% / 0.1);
4512
+ --ui-debug-color-strong: hsl(var(--ui-hue-primary, 220) 80% 50% / 0.25);
4515
4513
  }
4516
4514
  .ui-debug-grid-rows::after {
4517
4515
  content: "";
@@ -4527,9 +4525,8 @@
4527
4525
  background-size: var(--ui-unit) var(--ui-unit), var(--ui-unit) var(--ui-unit), var(--ui-unit) var(--ui-row);
4528
4526
  background-position: 0 0;
4529
4527
  }
4530
- /* Baseline grid only (horizontal lines) */
4531
4528
  .ui-debug-baseline {
4532
- --ui-debug-color: hsl(var(--ui-hue-danger) 80% 50% / 0.2);
4529
+ --ui-debug-color: hsl(var(--ui-hue-danger, 0) 80% 50% / 0.2);
4533
4530
  }
4534
4531
  .ui-debug-baseline::after {
4535
4532
  content: "";
@@ -4544,7 +4541,6 @@
4544
4541
  pointer-events: none;
4545
4542
  background-size: 100% var(--ui-unit);
4546
4543
  }
4547
- /* Element boundaries outline */
4548
4544
  .ui-debug-outline * {
4549
4545
  outline: 1px solid hsla(0, 100%, 50%, 0.5);
4550
4546
  }