@teseor/css 1.1.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 (236) hide show
  1. package/dist/compiled.css +1967 -1877
  2. package/dist/index.css +2015 -1925
  3. package/package.json +1 -1
  4. package/src/00-config/tokens/_variables.scss +39 -25
  5. package/src/00-config/tokens/colors/index.scss +22 -21
  6. package/src/00-config/tokens/shadows/index.scss +3 -3
  7. package/src/03-layout/cluster/cluster-visual.png +0 -0
  8. package/src/03-layout/cluster/cluster.visual.spec.ts +15 -0
  9. package/src/03-layout/sidebar/sidebar-visual.png +0 -0
  10. package/src/03-layout/sidebar/sidebar.docs.json +62 -0
  11. package/src/03-layout/sidebar/sidebar.visual.spec.ts +14 -0
  12. package/src/03-layout/sidebar-nav/sidebar-nav.api.json +29 -80
  13. package/src/04-components/actions/button/button-visual.png +0 -0
  14. package/src/04-components/{button → actions/button}/button.api.json +30 -56
  15. package/src/04-components/{button → actions/button}/button.docs.json +75 -0
  16. package/src/04-components/{button → actions/button}/button.visual.spec.ts +1 -1
  17. package/src/04-components/{button → actions/button}/index.scss +28 -18
  18. package/src/04-components/actions/button-group/button-group-visual.png +0 -0
  19. package/src/04-components/{button-group → actions/button-group}/button-group.api.json +5 -1
  20. package/src/04-components/{button-group → actions/button-group}/button-group.visual.spec.ts +3 -2
  21. package/src/04-components/{button-group → actions/button-group}/index.scss +1 -1
  22. package/src/04-components/{avatar → data-display/avatar}/avatar.api.json +5 -0
  23. package/src/04-components/{avatar → data-display/avatar}/avatar.visual.spec.ts +1 -1
  24. package/src/04-components/{avatar → data-display/avatar}/index.scss +1 -1
  25. package/src/04-components/{badge → data-display/badge}/badge.visual.spec.ts +1 -1
  26. package/src/04-components/{badge → data-display/badge}/index.scss +13 -10
  27. package/src/04-components/{card → data-display/card}/card.visual.spec.ts +1 -1
  28. package/src/04-components/{card → data-display/card}/index.scss +1 -1
  29. package/src/04-components/data-display/data-list/data-list-visual.png +0 -0
  30. package/src/04-components/{data-list → data-display/data-list}/data-list.api.json +16 -1
  31. package/src/04-components/{data-list → data-display/data-list}/data-list.visual.spec.ts +3 -2
  32. package/src/04-components/{data-list → data-display/data-list}/index.scss +4 -3
  33. package/src/04-components/data-display/icon/icon-visual.png +0 -0
  34. package/src/04-components/{icon → data-display/icon}/icon.api.json +7 -6
  35. package/src/04-components/{icon → data-display/icon}/icon.docs.json +86 -22
  36. package/src/04-components/{icon → data-display/icon}/icon.visual.spec.ts +1 -1
  37. package/src/04-components/{icon → data-display/icon}/index.scss +7 -20
  38. package/src/04-components/{status → data-display/status}/index.scss +1 -1
  39. package/src/04-components/{status → data-display/status}/status.api.json +14 -1
  40. package/src/04-components/{status → data-display/status}/status.visual.spec.ts +1 -1
  41. package/src/04-components/{table → data-display/table}/index.scss +1 -1
  42. package/src/04-components/{table → data-display/table}/table.api.json +8 -1
  43. package/src/04-components/{table → data-display/table}/table.visual.spec.ts +1 -1
  44. package/src/04-components/{tag → data-display/tag}/index.scss +1 -1
  45. package/src/04-components/{tag → data-display/tag}/tag.api.json +4 -0
  46. package/src/04-components/{tag → data-display/tag}/tag.visual.spec.ts +1 -1
  47. package/src/04-components/{accordion → disclosure/accordion}/accordion.api.json +5 -1
  48. package/src/04-components/{accordion → disclosure/accordion}/accordion.visual.spec.ts +1 -1
  49. package/src/04-components/{accordion → disclosure/accordion}/index.scss +1 -1
  50. package/src/04-components/disclosure/{disclosure.api.json → disclosure/disclosure.api.json} +13 -1
  51. package/src/04-components/disclosure/{disclosure.visual.spec.ts → disclosure/disclosure.visual.spec.ts} +1 -1
  52. package/src/04-components/disclosure/{index.scss → disclosure/index.scss} +1 -1
  53. package/src/04-components/{alert → feedback/alert}/alert.api.json +6 -0
  54. package/src/04-components/{alert → feedback/alert}/alert.visual.spec.ts +1 -1
  55. package/src/04-components/{alert → feedback/alert}/index.scss +11 -16
  56. package/src/04-components/{progress → feedback/progress}/index.scss +1 -1
  57. package/src/04-components/{progress → feedback/progress}/progress.api.json +20 -1
  58. package/src/04-components/{progress → feedback/progress}/progress.visual.spec.ts +1 -1
  59. package/src/04-components/{skeleton → feedback/skeleton}/index.scss +1 -1
  60. package/src/04-components/{skeleton → feedback/skeleton}/skeleton.api.json +8 -1
  61. package/src/04-components/{skeleton → feedback/skeleton}/skeleton.visual.spec.ts +1 -1
  62. package/src/04-components/{spinner → feedback/spinner}/index.scss +1 -1
  63. package/src/04-components/{spinner → feedback/spinner}/spinner.visual.spec.ts +1 -1
  64. package/src/04-components/{toast → feedback/toast}/index.scss +1 -1
  65. package/src/04-components/{toast → feedback/toast}/toast.api.json +22 -1
  66. package/src/04-components/{toast → feedback/toast}/toast.visual.spec.ts +1 -1
  67. package/src/04-components/forms/checkbox/checkbox-visual.png +0 -0
  68. package/src/04-components/{checkbox → forms/checkbox}/checkbox.api.json +1 -1
  69. package/src/04-components/{checkbox → forms/checkbox}/checkbox.visual.spec.ts +1 -1
  70. package/src/04-components/{checkbox → forms/checkbox}/index.scss +1 -1
  71. package/src/04-components/forms/field/field.api.json +19 -0
  72. package/src/04-components/{field → forms/field}/field.visual.spec.ts +1 -1
  73. package/src/04-components/{field → forms/field}/index.scss +1 -1
  74. package/src/04-components/forms/form-error/form-error-visual.png +0 -0
  75. package/src/04-components/{form-error → forms/form-error}/form-error.api.json +3 -0
  76. package/src/04-components/{form-error → forms/form-error}/form-error.visual.spec.ts +1 -1
  77. package/src/04-components/{form-error → forms/form-error}/index.scss +1 -1
  78. package/src/04-components/{form-helper → forms/form-helper}/form-helper.visual.spec.ts +1 -1
  79. package/src/04-components/{form-helper → forms/form-helper}/index.scss +1 -1
  80. package/src/04-components/{input → forms/input}/index.scss +1 -1
  81. package/src/04-components/forms/input/input-visual.png +0 -0
  82. package/src/04-components/{input → forms/input}/input.api.json +31 -0
  83. package/src/04-components/{input → forms/input}/input.visual.spec.ts +1 -1
  84. package/src/04-components/{label → forms/label}/index.scss +1 -1
  85. package/src/04-components/{label → forms/label}/label.api.json +4 -0
  86. package/src/04-components/{label → forms/label}/label.visual.spec.ts +1 -1
  87. package/src/04-components/{radio → forms/radio}/index.scss +1 -1
  88. package/src/04-components/forms/radio/radio-visual.png +0 -0
  89. package/src/04-components/{radio → forms/radio}/radio.api.json +1 -1
  90. package/src/04-components/{radio → forms/radio}/radio.visual.spec.ts +1 -1
  91. package/src/04-components/{select → forms/select}/index.scss +1 -1
  92. package/src/04-components/{select → forms/select}/select.api.json +3 -0
  93. package/src/04-components/{select → forms/select}/select.visual.spec.ts +1 -1
  94. package/src/04-components/{textarea → forms/textarea}/index.scss +1 -1
  95. package/src/04-components/{textarea → forms/textarea}/textarea.api.json +3 -0
  96. package/src/04-components/{textarea → forms/textarea}/textarea.visual.spec.ts +1 -1
  97. package/src/04-components/{toggle → forms/toggle}/index.scss +1 -1
  98. package/src/04-components/{toggle → forms/toggle}/toggle.api.json +5 -0
  99. package/src/04-components/{toggle → forms/toggle}/toggle.visual.spec.ts +1 -1
  100. package/src/04-components/index.scss +42 -41
  101. package/src/04-components/{divider → layout/divider}/divider.api.json +3 -0
  102. package/src/04-components/{divider → layout/divider}/divider.visual.spec.ts +1 -1
  103. package/src/04-components/{divider → layout/divider}/index.scss +1 -1
  104. package/src/04-components/{breadcrumb → navigation/breadcrumb}/breadcrumb.api.json +5 -0
  105. package/src/04-components/{breadcrumb → navigation/breadcrumb}/breadcrumb.visual.spec.ts +1 -1
  106. package/src/04-components/{breadcrumb → navigation/breadcrumb}/index.scss +1 -1
  107. package/src/04-components/{menu → navigation/menu}/index.scss +1 -1
  108. package/src/04-components/{menu → navigation/menu}/menu.api.json +24 -0
  109. package/src/04-components/{menu → navigation/menu}/menu.visual.spec.ts +1 -1
  110. package/src/04-components/navigation/nav/index.scss +142 -0
  111. package/src/04-components/navigation/nav/nav-visual.png +0 -0
  112. package/src/04-components/navigation/nav/nav.api.json +55 -0
  113. package/src/04-components/navigation/nav/nav.docs.json +242 -0
  114. package/src/04-components/navigation/nav/nav.visual.spec.ts +14 -0
  115. package/src/04-components/{pagination → navigation/pagination}/index.scss +1 -1
  116. package/src/04-components/{pagination → navigation/pagination}/pagination.api.json +22 -1
  117. package/src/04-components/{pagination → navigation/pagination}/pagination.visual.spec.ts +1 -1
  118. package/src/04-components/{tabs → navigation/tabs}/index.scss +1 -1
  119. package/src/04-components/{tabs → navigation/tabs}/tabs.api.json +17 -0
  120. package/src/04-components/{tabs → navigation/tabs}/tabs.visual.spec.ts +1 -1
  121. package/src/04-components/{dialog → overlays/dialog}/dialog.api.json +12 -1
  122. package/src/04-components/{dialog → overlays/dialog}/dialog.visual.spec.ts +1 -1
  123. package/src/04-components/{dialog → overlays/dialog}/index.scss +1 -1
  124. package/src/04-components/{drawer → overlays/drawer}/drawer.api.json +17 -1
  125. package/src/04-components/{drawer → overlays/drawer}/drawer.visual.spec.ts +1 -1
  126. package/src/04-components/{drawer → overlays/drawer}/index.scss +1 -1
  127. package/src/04-components/{modal → overlays/modal}/index.scss +1 -1
  128. package/src/04-components/{modal → overlays/modal}/modal.api.json +12 -1
  129. package/src/04-components/{modal → overlays/modal}/modal.visual.spec.ts +1 -1
  130. package/src/04-components/{overlay → overlays/overlay}/index.scss +1 -1
  131. package/src/04-components/{overlay → overlays/overlay}/overlay.api.json +14 -1
  132. package/src/04-components/{overlay → overlays/overlay}/overlay.visual.spec.ts +1 -1
  133. package/src/04-components/{popover → overlays/popover}/index.scss +1 -1
  134. package/src/04-components/{popover → overlays/popover}/popover.api.json +9 -1
  135. package/src/04-components/{popover → overlays/popover}/popover.visual.spec.ts +1 -1
  136. package/src/04-components/{tooltip → overlays/tooltip}/index.scss +1 -1
  137. package/src/04-components/{tooltip → overlays/tooltip}/tooltip.api.json +11 -1
  138. package/src/04-components/{tooltip → overlays/tooltip}/tooltip.visual.spec.ts +1 -1
  139. package/src/04-components/{code → typography/code}/code.api.json +6 -1
  140. package/src/04-components/{code → typography/code}/code.visual.spec.ts +1 -1
  141. package/src/04-components/{code → typography/code}/index.scss +1 -1
  142. package/src/04-components/{heading → typography/heading}/heading.visual.spec.ts +1 -1
  143. package/src/04-components/{heading → typography/heading}/index.scss +1 -1
  144. package/src/04-components/{link → typography/link}/index.scss +1 -1
  145. package/src/04-components/typography/link/link-visual.png +0 -0
  146. package/src/04-components/{link → typography/link}/link.api.json +6 -0
  147. package/src/04-components/{link → typography/link}/link.visual.spec.ts +1 -1
  148. package/src/99-debug/grid-overlay.scss +9 -8
  149. package/src/testing/page-setup.ts +25 -9
  150. package/src/testing/sidebar-toggles.spec.ts +103 -0
  151. package/src/04-components/button/button-visual.png +0 -0
  152. package/src/04-components/button-group/button-group-visual.png +0 -0
  153. package/src/04-components/checkbox/checkbox-visual.png +0 -0
  154. package/src/04-components/data-list/data-list-visual.png +0 -0
  155. package/src/04-components/field/field.api.json +0 -11
  156. package/src/04-components/form-error/form-error-visual.png +0 -0
  157. package/src/04-components/icon/icon-visual.png +0 -0
  158. package/src/04-components/input/input-visual.png +0 -0
  159. package/src/04-components/link/link-visual.png +0 -0
  160. package/src/04-components/radio/radio-visual.png +0 -0
  161. /package/src/04-components/{button-group → actions/button-group}/button-group.docs.json +0 -0
  162. /package/src/04-components/{avatar → data-display/avatar}/avatar-visual.png +0 -0
  163. /package/src/04-components/{avatar → data-display/avatar}/avatar.docs.json +0 -0
  164. /package/src/04-components/{badge → data-display/badge}/badge-visual.png +0 -0
  165. /package/src/04-components/{badge → data-display/badge}/badge.api.json +0 -0
  166. /package/src/04-components/{badge → data-display/badge}/badge.docs.json +0 -0
  167. /package/src/04-components/{card → data-display/card}/card-visual.png +0 -0
  168. /package/src/04-components/{card → data-display/card}/card.api.json +0 -0
  169. /package/src/04-components/{card → data-display/card}/card.docs.json +0 -0
  170. /package/src/04-components/{data-list → data-display/data-list}/data-list.docs.json +0 -0
  171. /package/src/04-components/{status → data-display/status}/status-visual.png +0 -0
  172. /package/src/04-components/{status → data-display/status}/status.docs.json +0 -0
  173. /package/src/04-components/{table → data-display/table}/table-visual.png +0 -0
  174. /package/src/04-components/{table → data-display/table}/table.docs.json +0 -0
  175. /package/src/04-components/{tag → data-display/tag}/tag-visual.png +0 -0
  176. /package/src/04-components/{tag → data-display/tag}/tag.docs.json +0 -0
  177. /package/src/04-components/{accordion → disclosure/accordion}/accordion-visual.png +0 -0
  178. /package/src/04-components/{accordion → disclosure/accordion}/accordion.docs.json +0 -0
  179. /package/src/04-components/disclosure/{disclosure-visual.png → disclosure/disclosure-visual.png} +0 -0
  180. /package/src/04-components/disclosure/{disclosure.docs.json → disclosure/disclosure.docs.json} +0 -0
  181. /package/src/04-components/{alert → feedback/alert}/alert-visual.png +0 -0
  182. /package/src/04-components/{alert → feedback/alert}/alert.docs.json +0 -0
  183. /package/src/04-components/{progress → feedback/progress}/progress-visual.png +0 -0
  184. /package/src/04-components/{progress → feedback/progress}/progress.docs.json +0 -0
  185. /package/src/04-components/{skeleton → feedback/skeleton}/skeleton-visual.png +0 -0
  186. /package/src/04-components/{skeleton → feedback/skeleton}/skeleton.docs.json +0 -0
  187. /package/src/04-components/{spinner → feedback/spinner}/spinner-visual.png +0 -0
  188. /package/src/04-components/{spinner → feedback/spinner}/spinner.api.json +0 -0
  189. /package/src/04-components/{spinner → feedback/spinner}/spinner.docs.json +0 -0
  190. /package/src/04-components/{toast → feedback/toast}/toast-visual.png +0 -0
  191. /package/src/04-components/{toast → feedback/toast}/toast.docs.json +0 -0
  192. /package/src/04-components/{checkbox → forms/checkbox}/checkbox.docs.json +0 -0
  193. /package/src/04-components/{field → forms/field}/field-visual.png +0 -0
  194. /package/src/04-components/{field → forms/field}/field.docs.json +0 -0
  195. /package/src/04-components/{form-error → forms/form-error}/form-error.docs.json +0 -0
  196. /package/src/04-components/{form-helper → forms/form-helper}/form-helper-visual.png +0 -0
  197. /package/src/04-components/{form-helper → forms/form-helper}/form-helper.api.json +0 -0
  198. /package/src/04-components/{form-helper → forms/form-helper}/form-helper.docs.json +0 -0
  199. /package/src/04-components/{input → forms/input}/input.docs.json +0 -0
  200. /package/src/04-components/{label → forms/label}/label-visual.png +0 -0
  201. /package/src/04-components/{label → forms/label}/label.docs.json +0 -0
  202. /package/src/04-components/{radio → forms/radio}/radio.docs.json +0 -0
  203. /package/src/04-components/{select → forms/select}/select-visual.png +0 -0
  204. /package/src/04-components/{select → forms/select}/select.docs.json +0 -0
  205. /package/src/04-components/{textarea → forms/textarea}/textarea-visual.png +0 -0
  206. /package/src/04-components/{textarea → forms/textarea}/textarea.docs.json +0 -0
  207. /package/src/04-components/{toggle → forms/toggle}/toggle-visual.png +0 -0
  208. /package/src/04-components/{toggle → forms/toggle}/toggle.docs.json +0 -0
  209. /package/src/04-components/{divider → layout/divider}/divider-visual.png +0 -0
  210. /package/src/04-components/{divider → layout/divider}/divider.docs.json +0 -0
  211. /package/src/04-components/{breadcrumb → navigation/breadcrumb}/breadcrumb-visual.png +0 -0
  212. /package/src/04-components/{breadcrumb → navigation/breadcrumb}/breadcrumb.docs.json +0 -0
  213. /package/src/04-components/{menu → navigation/menu}/menu-visual.png +0 -0
  214. /package/src/04-components/{menu → navigation/menu}/menu.docs.json +0 -0
  215. /package/src/04-components/{pagination → navigation/pagination}/pagination-visual.png +0 -0
  216. /package/src/04-components/{pagination → navigation/pagination}/pagination.docs.json +0 -0
  217. /package/src/04-components/{tabs → navigation/tabs}/tabs-visual.png +0 -0
  218. /package/src/04-components/{tabs → navigation/tabs}/tabs.docs.json +0 -0
  219. /package/src/04-components/{dialog → overlays/dialog}/dialog-visual.png +0 -0
  220. /package/src/04-components/{dialog → overlays/dialog}/dialog.docs.json +0 -0
  221. /package/src/04-components/{drawer → overlays/drawer}/drawer-visual.png +0 -0
  222. /package/src/04-components/{drawer → overlays/drawer}/drawer.docs.json +0 -0
  223. /package/src/04-components/{modal → overlays/modal}/modal-visual.png +0 -0
  224. /package/src/04-components/{modal → overlays/modal}/modal.docs.json +0 -0
  225. /package/src/04-components/{overlay → overlays/overlay}/overlay-visual.png +0 -0
  226. /package/src/04-components/{overlay → overlays/overlay}/overlay.docs.json +0 -0
  227. /package/src/04-components/{popover → overlays/popover}/popover-visual.png +0 -0
  228. /package/src/04-components/{popover → overlays/popover}/popover.docs.json +0 -0
  229. /package/src/04-components/{tooltip → overlays/tooltip}/tooltip-visual.png +0 -0
  230. /package/src/04-components/{tooltip → overlays/tooltip}/tooltip.docs.json +0 -0
  231. /package/src/04-components/{code → typography/code}/code-visual.png +0 -0
  232. /package/src/04-components/{code → typography/code}/code.docs.json +0 -0
  233. /package/src/04-components/{heading → typography/heading}/heading-visual.png +0 -0
  234. /package/src/04-components/{heading → typography/heading}/heading.api.json +0 -0
  235. /package/src/04-components/{heading → typography/heading}/heading.docs.json +0 -0
  236. /package/src/04-components/{link → typography/link}/link.docs.json +0 -0
package/dist/index.css CHANGED
@@ -9,26 +9,25 @@
9
9
  /* 00. Config: Layer definitions + Design tokens */
10
10
  /* Fonts (Google Fonts CDN) */
11
11
  :root {
12
- --ui-hue-primary: 220;
13
- --ui-hue-success: 142;
14
- --ui-hue-warning: 38;
15
- --ui-hue-danger: 0;
16
- --ui-color-neutral-50: hsl(var(--ui-hue-primary) 10% 98%);
17
- --ui-color-neutral-100: hsl(var(--ui-hue-primary) 10% 96%);
18
- --ui-color-neutral-200: hsl(var(--ui-hue-primary) 10% 90%);
19
- --ui-color-neutral-300: hsl(var(--ui-hue-primary) 10% 80%);
20
- --ui-color-neutral-400: hsl(var(--ui-hue-primary) 10% 60%);
21
- --ui-color-neutral-500: hsl(var(--ui-hue-primary) 10% 45%);
22
- --ui-color-neutral-600: hsl(var(--ui-hue-primary) 10% 35%);
23
- --ui-color-neutral-700: hsl(var(--ui-hue-primary) 10% 25%);
24
- --ui-color-neutral-800: hsl(var(--ui-hue-primary) 10% 15%);
25
- --ui-color-neutral-900: hsl(var(--ui-hue-primary) 10% 10%);
26
- --ui-color-primary-light: hsl(var(--ui-hue-primary) 85% 65%);
27
- --ui-color-primary: hsl(var(--ui-hue-primary) 85% 50%);
28
- --ui-color-primary-dark: hsl(var(--ui-hue-primary) 85% 40%);
29
- --ui-color-success: hsl(var(--ui-hue-success) 70% 45%);
30
- --ui-color-warning: hsl(var(--ui-hue-warning) 90% 50%);
31
- --ui-color-danger: hsl(var(--ui-hue-danger) 70% 50%);
12
+ --ui-color-primary: oklch(55% 0.22 250);
13
+ --ui-color-success: oklch(60% 0.18 145);
14
+ --ui-color-warning: oklch(75% 0.18 70);
15
+ --ui-color-danger: oklch(60% 0.22 25);
16
+ --ui-color-neutral: oklch(50% 0.02 250);
17
+ --ui-color-primary-light: color-mix(in oklch, var(--ui-color-primary) 50%, white);
18
+ --ui-color-primary-dark: color-mix(in oklch, var(--ui-color-primary) 75%, black);
19
+ --ui-color-primary-subtle: color-mix(in oklch, var(--ui-color-primary) 12%, white);
20
+ --ui-color-primary-hover: color-mix(in oklch, var(--ui-color-primary) 85%, black);
21
+ --ui-color-neutral-50: color-mix(in oklch, var(--ui-color-neutral) 3%, white);
22
+ --ui-color-neutral-100: color-mix(in oklch, var(--ui-color-neutral) 6%, white);
23
+ --ui-color-neutral-200: color-mix(in oklch, var(--ui-color-neutral) 12%, white);
24
+ --ui-color-neutral-300: color-mix(in oklch, var(--ui-color-neutral) 25%, white);
25
+ --ui-color-neutral-400: color-mix(in oklch, var(--ui-color-neutral) 50%, white);
26
+ --ui-color-neutral-500: var(--ui-color-neutral);
27
+ --ui-color-neutral-600: color-mix(in oklch, var(--ui-color-neutral) 85%, black);
28
+ --ui-color-neutral-700: color-mix(in oklch, var(--ui-color-neutral) 70%, black);
29
+ --ui-color-neutral-800: color-mix(in oklch, var(--ui-color-neutral) 50%, black);
30
+ --ui-color-neutral-900: color-mix(in oklch, var(--ui-color-neutral) 35%, black);
32
31
  }
33
32
  :root {
34
33
  --ui-space-px: calc(var(--ui-unit) * 0.125);
@@ -135,9 +134,9 @@
135
134
  --ui-border-width-lg: calc(var(--ui-unit) * 0.5);
136
135
  }
137
136
  :root {
138
- --ui-shadow-sm: 0 1px 2px hsl(var(--ui-hue-primary) 10% 20% / 0.05);
139
- --ui-shadow-md: 0 4px 6px hsl(var(--ui-hue-primary) 10% 20% / 0.1);
140
- --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);
141
140
  }
142
141
  @layer tokens {
143
142
  :root {
@@ -715,13 +714,13 @@
715
714
  .ui-sidebar-nav--collapsed {
716
715
  --ui-_width: var(--ui-sidebar-nav-width-collapsed, var(--ui-row-3));
717
716
  }
718
- .ui-sidebar-nav--collapsed .sidebar-nav__label,
719
- .ui-sidebar-nav--collapsed .sidebar-nav__badge,
720
- .ui-sidebar-nav--collapsed .sidebar-nav__group-label,
721
- .ui-sidebar-nav--collapsed .sidebar-nav__subgroup-label {
717
+ .ui-sidebar-nav--collapsed .ui-sidebar-nav__label,
718
+ .ui-sidebar-nav--collapsed .ui-sidebar-nav__badge,
719
+ .ui-sidebar-nav--collapsed .ui-sidebar-nav__group-label,
720
+ .ui-sidebar-nav--collapsed .ui-sidebar-nav__subgroup-label {
722
721
  display: none;
723
722
  }
724
- .ui-sidebar-nav--collapsed .sidebar-nav__item {
723
+ .ui-sidebar-nav--collapsed .ui-sidebar-nav__item {
725
724
  justify-content: center;
726
725
  padding-inline: var(--ui-space-1);
727
726
  }
@@ -768,134 +767,216 @@
768
767
  }
769
768
  /* 04. Components */
770
769
  @layer components.tokens {
771
- .ui-accordion {
772
- --ui-_border-color: var(--ui-accordion-border-color, var(--ui-color-border, rgb(0 0 0 / 0.1)));
773
- --ui-_border-width: var(--ui-accordion-border-width, 1px);
774
- --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%)));
780
+ }
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));
785
+ }
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));
790
+ }
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));
796
+ }
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%));
801
+ }
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);
806
+ }
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;
813
+ }
814
+ .ui-button--danger {
815
+ --ui-_accent: var(--ui-color-danger, oklch(60% 0.22 25deg));
816
+ }
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;
825
+ }
826
+ .ui-button--icon {
827
+ --ui-_padding-x: 0;
828
+ }
829
+ .ui-button--radius-none {
830
+ --ui-_radius: 0;
831
+ }
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;
775
840
  }
776
841
  }
777
842
  @layer components.styles {
778
- .ui-accordion {
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);
779
860
  border-radius: var(--ui-_radius);
780
- outline: var(--ui-_border-width) solid var(--ui-_border-color);
781
- outline-offset: calc(var(--ui-_border-width) * -1);
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);
782
863
  }
783
- .ui-accordion > .disclosure {
784
- --ui-_border-width: 0;
785
- border: none;
786
- border-radius: 0;
864
+ .ui-button:hover, .ui-button--hover {
865
+ color: var(--ui-_text-hover, var(--ui-_text));
866
+ background: var(--ui-_bg-hover);
787
867
  }
788
- .ui-accordion > .disclosure + .disclosure {
789
- border-block-start: 1px solid var(--ui-_border-color);
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);
790
871
  }
791
- .ui-accordion > .disclosure:first-child .disclosure__trigger {
792
- border-start-start-radius: var(--ui-_radius);
793
- border-start-end-radius: var(--ui-_radius);
872
+ .ui-button:active, .ui-button--active {
873
+ transform: scale(0.98);
794
874
  }
795
- .ui-accordion > .disclosure:last-child .disclosure__trigger {
796
- border-end-start-radius: var(--ui-_radius);
797
- border-end-end-radius: var(--ui-_radius);
875
+ .ui-button:disabled {
876
+ opacity: 0.5;
877
+ cursor: not-allowed;
798
878
  }
799
- .ui-accordion > .disclosure:last-child .disclosure__content {
800
- border-end-start-radius: var(--ui-_radius);
801
- border-end-end-radius: var(--ui-_radius);
879
+ .ui-button:disabled:hover {
880
+ background: var(--ui-_bg);
881
+ transform: none;
802
882
  }
803
- .ui-accordion--borderless {
804
- border: none;
883
+ .ui-button--icon {
884
+ inline-size: var(--ui-_height);
805
885
  }
806
- .ui-accordion--borderless > .disclosure + .disclosure {
807
- border-block-start: none;
886
+ .ui-button--block {
887
+ inline-size: 100%;
808
888
  }
809
- .ui-accordion--separated {
810
- display: flex;
811
- flex-direction: column;
812
- gap: calc(0.5rem * 1);
813
- border: none;
889
+ .ui-button--link {
890
+ text-decoration: underline;
891
+ text-underline-offset: var(--ui-space-quarter);
814
892
  }
815
- .ui-accordion--separated > .disclosure {
816
- border: 1px solid var(--ui-_border-color);
817
- border-radius: var(--ui-_radius);
893
+ .ui-button--link:hover {
894
+ text-decoration-thickness: var(--ui-space-quarter);
818
895
  }
819
- .ui-accordion--separated > .disclosure + .disclosure {
820
- border-block-start: 1px solid var(--ui-_border-color);
896
+ .ui-button__icon {
897
+ flex-shrink: 0;
898
+ block-size: 1em;
899
+ inline-size: 1em;
821
900
  }
822
- }
823
- @layer components.tokens {
824
- .ui-alert {
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: var(--ui-alert-bg, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
830
- --ui-_border-color: var(--ui-alert-border-color, var(--ui-color-border, hsl(220, 10%, 90%)));
831
- --ui-_color: var(--ui-alert-color, var(--ui-color-text, hsl(220, 10%, 10%)));
832
- --ui-_icon-color: var(--ui-alert-icon-color, currentcolor);
901
+ .ui-button__icon--start {
902
+ order: -1;
833
903
  }
834
- .ui-alert--info {
835
- --ui-_bg: var(--ui-alert-info-bg, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
836
- --ui-_border-color: var(--ui-alert-info-border, var(--ui-color-primary, hsl(220, 85%, 50%)));
837
- --ui-_icon-color: var(--ui-alert-info-icon, var(--ui-color-primary, hsl(220, 85%, 50%)));
904
+ .ui-button__icon--end {
905
+ order: 1;
838
906
  }
839
- .ui-alert--success {
840
- --ui-_bg: var(--ui-alert-success-bg, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
841
- --ui-_border-color: var(--ui-alert-success-border, var(--ui-color-success, hsl(142, 70%, 45%)));
842
- --ui-_icon-color: var(--ui-alert-success-icon, var(--ui-color-success, hsl(142, 70%, 45%)));
907
+ .ui-button--loading {
908
+ position: relative;
909
+ opacity: 0.7;
910
+ pointer-events: none;
843
911
  }
844
- .ui-alert--warning {
845
- --ui-_bg: var(--ui-alert-warning-bg, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
846
- --ui-_border-color: var(--ui-alert-warning-border, var(--ui-color-warning, hsl(38, 90%, 50%)));
847
- --ui-_icon-color: var(--ui-alert-warning-icon, var(--ui-color-warning, hsl(38, 90%, 50%)));
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;
848
921
  }
849
- .ui-alert--danger {
850
- --ui-_bg: var(--ui-alert-danger-bg, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
851
- --ui-_border-color: var(--ui-alert-danger-border, var(--ui-color-danger, hsl(0, 70%, 50%)));
852
- --ui-_icon-color: var(--ui-alert-danger-icon, var(--ui-color-danger, hsl(0, 70%, 50%)));
922
+ @keyframes button-spin {
923
+ to {
924
+ transform: rotate(360deg);
925
+ }
926
+ }
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)));
853
931
  }
854
932
  }
855
933
  @layer components.styles {
856
- .ui-alert {
857
- display: flex;
858
- align-items: flex-start;
859
- gap: var(--ui-_gap);
860
- padding: calc(var(--ui-_padding) - var(--ui-_border-width));
861
- padding-inline: var(--ui-_padding);
862
- color: var(--ui-_color);
863
- background: var(--ui-_bg);
864
- border: var(--ui-_border-width) solid var(--ui-_border-color);
865
- border-radius: var(--ui-_radius);
866
- border-inline-start-width: calc(0.5rem * 0.5);
934
+ .ui-button-group {
935
+ display: inline-flex;
867
936
  }
868
- .ui-alert__icon {
869
- flex-shrink: 0;
870
- color: var(--ui-_icon-color);
937
+ .ui-button-group > .ui-button:not(:first-child, :last-child) {
938
+ border-radius: 0;
871
939
  }
872
- .ui-alert__content {
873
- flex: 1;
874
- min-inline-size: 0;
940
+ .ui-button-group > .ui-button:first-child:not(:last-child) {
941
+ border-start-end-radius: 0;
942
+ border-end-end-radius: 0;
875
943
  }
876
- .ui-alert__title {
877
- margin: 0;
878
- font-weight: var(--ui-weight-medium, 500);
879
- line-height: var(--ui-row-1, 1rem);
944
+ .ui-button-group > .ui-button:last-child:not(:first-child) {
945
+ border-start-start-radius: 0;
946
+ border-end-start-radius: 0;
880
947
  }
881
- .ui-alert__description {
882
- margin: 0;
883
- margin-block-start: calc(0.5rem * 1);
884
- font-size: var(--ui-font-size-sm, 0.875rem);
885
- line-height: var(--ui-row-1, 1rem);
886
- color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
948
+ .ui-button-group > .ui-button + .ui-button {
949
+ margin-inline-start: calc(0.5rem / -8);
887
950
  }
888
- .ui-alert__close {
889
- flex-shrink: 0;
890
- align-self: flex-start;
891
- padding: 0;
892
- color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
893
- background: none;
894
- border: none;
895
- cursor: pointer;
951
+ .ui-button-group > .ui-button:focus-visible {
952
+ z-index: 1;
896
953
  }
897
- .ui-alert__close:hover {
898
- color: var(--ui-color-text, hsl(220, 10%, 10%));
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;
899
980
  }
900
981
  }
901
982
  @layer components.tokens {
@@ -965,22 +1046,23 @@
965
1046
  flex-direction: row-reverse;
966
1047
  justify-content: flex-end;
967
1048
  }
968
- .ui-avatar-group > .avatar {
1049
+ .ui-avatar-group > .ui-avatar {
969
1050
  margin-inline-start: calc(var(--ui-_size) * -0.25);
970
1051
  border: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-color-bg, hsl(220, 10%, 98%));
971
1052
  }
972
- .ui-avatar-group > .avatar:last-child {
1053
+ .ui-avatar-group > .ui-avatar:last-child {
973
1054
  margin-inline-start: 0;
974
1055
  }
975
1056
  }
976
1057
  @layer components.tokens {
977
1058
  .ui-badge {
1059
+ --ui-_accent: var(--ui-badge-accent, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
978
1060
  --ui-_height: var(--ui-badge-height, calc(var(--ui-row, 1rem) * 1.25));
979
1061
  --ui-_padding-x: var(--ui-badge-padding-x, var(--ui-space-1, 0.5rem));
980
1062
  --ui-_font-size: var(--ui-badge-font-size, var(--ui-font-size-xs, 0.75rem));
981
1063
  --ui-_font-weight: var(--ui-badge-font-weight, var(--ui-weight-medium, 500));
982
1064
  --ui-_radius: var(--ui-badge-radius, var(--ui-radius-full, 9999px));
983
- --ui-_bg: var(--ui-badge-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
1065
+ --ui-_bg: var(--ui-_accent);
984
1066
  --ui-_text: var(--ui-badge-text, var(--ui-color-text, hsl(220, 10%, 10%)));
985
1067
  }
986
1068
  .ui-badge--sm {
@@ -989,20 +1071,20 @@
989
1071
  --ui-_font-size: var(--ui-badge-font-size-sm, calc(var(--ui-font-size-xs, 0.75rem) * 0.85));
990
1072
  }
991
1073
  .ui-badge--primary {
992
- --ui-_bg: var(--ui-badge-primary-bg, var(--ui-color-primary, hsl(220, 85%, 50%)));
993
- --ui-_text: var(--ui-badge-primary-text, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
1074
+ --ui-_accent: var(--ui-color-primary, oklch(55% 0.22 250deg));
1075
+ --ui-_text: var(--ui-color-text-inverse, hsl(220, 10%, 98%));
994
1076
  }
995
1077
  .ui-badge--success {
996
- --ui-_bg: var(--ui-badge-success-bg, var(--ui-color-success, hsl(142, 70%, 45%)));
997
- --ui-_text: var(--ui-badge-success-text, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
1078
+ --ui-_accent: var(--ui-color-success, oklch(60% 0.18 145deg));
1079
+ --ui-_text: var(--ui-color-text-inverse, hsl(220, 10%, 98%));
998
1080
  }
999
1081
  .ui-badge--warning {
1000
- --ui-_bg: var(--ui-badge-warning-bg, var(--ui-color-warning, hsl(38, 90%, 50%)));
1001
- --ui-_text: var(--ui-badge-warning-text, var(--ui-color-text, hsl(220, 10%, 10%)));
1082
+ --ui-_accent: var(--ui-color-warning, oklch(75% 0.18 70deg));
1083
+ --ui-_text: var(--ui-color-text, hsl(220, 10%, 10%));
1002
1084
  }
1003
1085
  .ui-badge--danger {
1004
- --ui-_bg: var(--ui-badge-danger-bg, var(--ui-color-danger, hsl(0, 70%, 50%)));
1005
- --ui-_text: var(--ui-badge-danger-text, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
1086
+ --ui-_accent: var(--ui-color-danger, oklch(60% 0.22 25deg));
1087
+ --ui-_text: var(--ui-color-text-inverse, hsl(220, 10%, 98%));
1006
1088
  }
1007
1089
  }
1008
1090
  @layer components.styles {
@@ -1022,535 +1104,389 @@
1022
1104
  }
1023
1105
  }
1024
1106
  @layer components.tokens {
1025
- .ui-breadcrumb {
1026
- --ui-_height: var(--ui-breadcrumb-height, var(--ui-row-1, 1rem));
1027
- --ui-_gap: var(--ui-breadcrumb-gap, calc(0.5rem * 1));
1028
- --ui-_separator-color: var(--ui-breadcrumb-separator-color, var(--ui-color-text-muted));
1029
- --ui-_link-color: var(--ui-breadcrumb-link-color, var(--ui-color-text-muted));
1030
- --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;
1031
1129
  }
1032
1130
  }
1033
1131
  @layer components.styles {
1034
- .ui-breadcrumb {
1035
- display: flex;
1036
- flex-wrap: wrap;
1037
- align-items: center;
1038
- gap: var(--ui-_gap);
1039
- block-size: var(--ui-_height);
1040
- padding: 0;
1041
- margin: 0;
1042
- font-size: var(--ui-font-size-sm, 0.875rem);
1043
- line-height: 1;
1044
- list-style: none;
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);
1045
1138
  }
1046
- .ui-breadcrumb__item {
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 {
1047
1150
  display: flex;
1048
- align-items: center;
1151
+ flex-direction: column;
1049
1152
  gap: var(--ui-_gap);
1050
- block-size: var(--ui-_height);
1153
+ margin: 0;
1154
+ line-height: var(--ui-row-1, 1rem);
1051
1155
  }
1052
- .ui-breadcrumb__item:not(:last-child)::after {
1053
- content: var(--ui-breadcrumb-separator, "/");
1054
- color: var(--ui-_separator-color);
1156
+ .ui-data-list__item {
1157
+ display: flex;
1158
+ flex-direction: column;
1159
+ gap: var(--ui-_item-gap);
1055
1160
  }
1056
- .ui-breadcrumb__link {
1057
- text-decoration: none;
1058
- color: var(--ui-_link-color);
1059
- transition: color var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
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);
1060
1166
  }
1061
- .ui-breadcrumb__link:hover {
1062
- text-decoration: underline;
1063
- color: var(--ui-color-primary);
1167
+ .ui-data-list__value {
1168
+ margin: 0;
1169
+ line-height: var(--ui-row-1, 1rem);
1170
+ color: var(--ui-_value-color);
1064
1171
  }
1065
- .ui-breadcrumb__item:last-child .breadcrumb__link,
1066
- .ui-breadcrumb__current {
1067
- color: var(--ui-_current-color);
1068
- pointer-events: none;
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);
1069
1177
  }
1070
- .ui-breadcrumb__item--hidden {
1071
- display: none;
1178
+ .ui-data-list--horizontal .ui-data-list__label {
1179
+ flex-shrink: 0;
1072
1180
  }
1073
- .ui-breadcrumb__ellipsis {
1074
- color: var(--ui-_separator-color);
1181
+ .ui-data-list--horizontal .ui-data-list__value {
1182
+ text-align: end;
1075
1183
  }
1076
- }
1077
- @layer components.tokens {
1078
- .ui-button {
1079
- --ui-_height: var(--ui-button-height, var(--ui-row-2, 2rem));
1080
- --ui-_padding-x: var(--ui-button-padding-x, var(--ui-space-2, 1rem));
1081
- --ui-_font-size: var(--ui-button-font-size, var(--ui-font-size-sm, 0.875rem));
1082
- --ui-_font-weight: var(--ui-button-font-weight, var(--ui-weight-medium, 500));
1083
- --ui-_radius: var(--ui-button-radius, var(--ui-radius-md, 0.5rem));
1084
- --ui-_bg: var(--ui-button-bg, var(--ui-color-primary, hsl(220, 85%, 50%)));
1085
- --ui-_bg-hover: var(--ui-button-bg-hover, var(--ui-color-primary-dark, hsl(220, 85%, 40%)));
1086
- --ui-_text: var(--ui-button-text, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
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%));
1087
1187
  }
1088
- .ui-button--sm {
1089
- --ui-_height: var(--ui-button-height-sm, calc(var(--ui-row, 1rem) * 1.5));
1090
- --ui-_font-size: var(--ui-button-font-size-sm, var(--ui-font-size-xs, 0.75rem));
1188
+ .ui-data-list--divided .ui-data-list__item:last-child {
1189
+ padding-block-end: 0;
1190
+ border-block-end: none;
1091
1191
  }
1092
- .ui-button--lg {
1093
- --ui-_height: var(--ui-button-height-lg, calc(var(--ui-row, 1rem) * 2.5));
1094
- --ui-_padding-x: var(--ui-button-padding-x-lg, var(--ui-space-3, 1.5rem));
1095
- --ui-_font-size: var(--ui-button-font-size-lg, var(--ui-font-size-md, 1rem));
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);
1096
1196
  }
1097
- .ui-button--secondary {
1098
- --ui-_bg: var(--ui-button-secondary-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
1099
- --ui-_bg-hover: var(--ui-button-secondary-bg-hover, var(--ui-color-border-strong, hsl(220, 10%, 80%)));
1100
- --ui-_text: var(--ui-button-secondary-text, var(--ui-color-text, hsl(220, 10%, 10%)));
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);
1101
1201
  }
1102
- .ui-button--ghost {
1103
- --ui-_bg: var(--ui-button-ghost-bg, transparent);
1104
- --ui-_bg-hover: var(--ui-button-ghost-bg-hover, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
1105
- --ui-_text: var(--ui-button-ghost-text, var(--ui-color-primary, hsl(220, 85%, 50%)));
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);
1106
1206
  }
1107
- .ui-button--outline {
1108
- --ui-_bg: var(--ui-button-outline-bg, transparent);
1109
- --ui-_bg-hover: var(--ui-button-outline-bg-hover, var(--ui-color-primary, hsl(220, 85%, 50%)));
1110
- --ui-_text: var(--ui-button-outline-text, var(--ui-color-primary, hsl(220, 85%, 50%)));
1111
- --ui-_text-hover: var(--ui-button-outline-text-hover, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
1112
- --ui-_border: var(--ui-button-outline-border, var(--ui-border-width-sm, 0.0625rem) solid currentColor);
1207
+ }
1208
+ @layer components.tokens {
1209
+ .ui-icon {
1210
+ --ui-_size: var(--ui-icon-size, var(--ui-ctx-size, 1rem));
1211
+ --ui-_stroke: var(--ui-icon-stroke, 2);
1113
1212
  }
1114
- .ui-button--danger {
1115
- --ui-_bg: var(--ui-button-danger-bg, var(--ui-color-danger, hsl(0, 70%, 50%)));
1116
- --ui-_bg-hover: var(--ui-button-danger-bg-hover, hsl(0, 70%, 40%));
1213
+ .ui-icon--xs {
1214
+ --ui-_size: var(--ui-icon-size-xs, var(--ui-size-xs, 0.5rem));
1117
1215
  }
1118
- .ui-button--link {
1119
- --ui-_bg: transparent;
1120
- --ui-_bg-hover: transparent;
1121
- --ui-_text: var(--ui-button-link-text, var(--ui-color-primary, hsl(220, 85%, 50%)));
1122
- --ui-_text-hover: var(--ui-button-link-text-hover, var(--ui-color-primary-dark, hsl(220, 85%, 40%)));
1123
- --ui-_height: auto;
1124
- --ui-_padding-x: 0;
1125
- --ui-_radius: 0;
1216
+ .ui-icon--sm {
1217
+ --ui-_size: var(--ui-icon-size-sm, var(--ui-size-sm, 0.75rem));
1126
1218
  }
1127
- .ui-button--icon {
1128
- --ui-_padding-x: 0;
1219
+ .ui-icon--md {
1220
+ --ui-_size: var(--ui-icon-size-md, var(--ui-size-md, 1rem));
1129
1221
  }
1130
- .ui-button--radius-none {
1131
- --ui-_radius: 0;
1222
+ .ui-icon--lg {
1223
+ --ui-_size: var(--ui-icon-size-lg, var(--ui-size-lg, 1.25rem));
1132
1224
  }
1133
- .ui-button--radius-sm {
1134
- --ui-_radius: var(--ui-radius-sm, 0.25rem);
1225
+ .ui-icon--xl {
1226
+ --ui-_size: var(--ui-icon-size-xl, var(--ui-size-xl, 1.5rem));
1135
1227
  }
1136
- .ui-button--radius-lg {
1137
- --ui-_radius: var(--ui-radius-lg, 1rem);
1228
+ .ui-icon--stroke-thin {
1229
+ --ui-_stroke: var(--ui-icon-stroke-thin, 1);
1138
1230
  }
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, hsl(220, 85%, 65%));
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
  }
1228
- }
1229
- @layer components.tokens {
1230
- .ui-button-group {
1231
- --ui-_radius: var(--ui-button-group-radius, var(--ui-radius-md, calc(0.5rem / 2)));
1232
- }
1233
- }
1234
- @layer components.styles {
1235
- .ui-button-group {
1236
- display: inline-flex;
1237
- }
1238
- .ui-button-group > .button:not(:first-child, :last-child) {
1239
- border-radius: 0;
1240
- }
1241
- .ui-button-group > .button:first-child:not(:last-child) {
1242
- border-start-end-radius: 0;
1243
- border-end-end-radius: 0;
1244
- }
1245
- .ui-button-group > .button:last-child:not(:first-child) {
1246
- border-start-start-radius: 0;
1247
- border-end-start-radius: 0;
1248
- }
1249
- .ui-button-group > .button + .button {
1250
- margin-inline-start: calc(0.5rem / -8);
1251
- }
1252
- .ui-button-group > .button:focus-visible {
1253
- z-index: 1;
1315
+ .ui-status--sm {
1316
+ --ui-_size: calc(0.5rem * 0.75);
1317
+ --ui-_gap: calc(0.5rem * 0.75);
1254
1318
  }
1255
- .ui-button-group--vertical {
1256
- flex-direction: column;
1319
+ .ui-status--lg {
1320
+ --ui-_size: calc(0.5rem * 1.5);
1321
+ --ui-_gap: calc(0.5rem * 1.5);
1257
1322
  }
1258
- .ui-button-group--vertical > .button:not(:first-child, :last-child) {
1259
- border-radius: 0;
1323
+ }
1324
+ @layer components.tokens {
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));
1260
1331
  }
1261
- .ui-button-group--vertical > .button:first-child:not(:last-child) {
1262
- border-end-start-radius: 0;
1263
- border-end-end-radius: 0;
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);
1264
1336
  }
1265
- .ui-button-group--vertical > .button:last-child:not(:first-child) {
1266
- border-start-start-radius: 0;
1267
- border-start-end-radius: 0;
1337
+ }
1338
+ @layer components.styles {
1339
+ .ui-table {
1340
+ inline-size: 100%;
1341
+ font-size: var(--ui-_font-size);
1342
+ border-collapse: separate;
1343
+ border-spacing: 0;
1268
1344
  }
1269
- .ui-button-group--vertical > .button + .button {
1270
- margin-block-start: calc(0.5rem / -8);
1271
- margin-inline-start: 0;
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);
1272
1353
  }
1273
- .ui-button-group--attached > .button {
1274
- border-inline-end-width: 0;
1354
+ .ui-table th {
1355
+ font-weight: var(--ui-weight-medium, 500);
1356
+ background: var(--ui-_header-bg);
1275
1357
  }
1276
- .ui-button-group--attached > .button:last-child {
1277
- border-inline-end-width: 1px;
1358
+ .ui-table--striped tbody tr:nth-child(odd) {
1359
+ background: var(--ui-color-bg-subtle, hsl(220, 10%, 96%));
1278
1360
  }
1279
- .ui-button-group--attached > .button + .button {
1280
- margin-inline-start: 0;
1361
+ .ui-table--striped th {
1362
+ background: var(--ui-color-bg-muted, hsl(220, 10%, 90%));
1281
1363
  }
1282
1364
  }
1283
1365
  @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));
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%)));
1290
1374
  }
1291
- .ui-card--subtle {
1292
- --ui-_bg: var(--ui-card-bg-subtle, var(--ui-color-bg-subtle));
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));
1293
1379
  }
1294
- .ui-card--muted {
1295
- --ui-_bg: var(--ui-card-bg-muted, var(--ui-color-bg-muted));
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%)));
1296
1383
  }
1297
- .ui-card--sm {
1298
- --ui-_padding: var(--ui-card-padding-sm, var(--ui-space-2));
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%)));
1299
1387
  }
1300
- .ui-card--lg {
1301
- --ui-_padding: var(--ui-card-padding-lg, var(--ui-space-6));
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%)));
1302
1391
  }
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, hsl(220, 85%, 50%)));
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, hsl(220, 85%, 50%)));
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, hsl(0, 70%, 50%)));
1332
- --ui-_border-color-focus: var(--ui-checkbox-error-border, var(--ui-color-danger, hsl(0, 70%, 50%)));
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, hsl(220, 85%, 65%));
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;
1433
- }
1434
- }
1435
- @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%)));
1441
- }
1442
- }
1443
- @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);
1450
- }
1451
- .ui-data-list__item {
1452
- display: flex;
1453
- flex-direction: column;
1454
- gap: var(--ui-_item-gap);
1455
- }
1456
- .ui-data-list__label {
1457
- font-size: var(--ui-font-size-sm, 0.875rem);
1458
- font-weight: var(--ui-weight-medium, 500);
1459
- line-height: var(--ui-row-1, 1rem);
1460
- color: var(--ui-_label-color);
1461
- }
1462
- .ui-data-list__value {
1463
- margin: 0;
1464
- line-height: var(--ui-row-1, 1rem);
1465
- color: var(--ui-_value-color);
1466
- }
1467
- .ui-data-list--horizontal .data-list__item {
1468
- flex-direction: row;
1469
- align-items: baseline;
1470
- justify-content: space-between;
1471
- gap: calc(0.5rem * 2);
1472
- }
1473
- .ui-data-list--horizontal .data-list__label {
1474
- flex-shrink: 0;
1475
- }
1476
- .ui-data-list--horizontal .data-list__value {
1477
- text-align: end;
1478
- }
1479
- .ui-data-list--divided .data-list__item {
1480
- padding-block-end: var(--ui-_gap);
1481
- border-block-end: 1px solid var(--ui-color-border, hsl(220, 10%, 90%));
1482
- }
1483
- .ui-data-list--divided .data-list__item:last-child {
1484
- padding-block-end: 0;
1485
- border-block-end: none;
1486
- }
1487
- .ui-data-list--striped .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 .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);
1487
+ .ui-accordion--separated > .ui-disclosure + .ui-disclosure {
1546
1488
  border-block-start: 1px solid var(--ui-_border-color);
1547
1489
  }
1548
- .ui-dialog--borderless .dialog__header {
1549
- border-block-end: none;
1550
- }
1551
- .ui-dialog--borderless .dialog__footer {
1552
- border-block-start: none;
1553
- }
1554
1490
  }
1555
1491
  @layer components.tokens {
1556
1492
  .ui-disclosure {
@@ -1599,13 +1535,13 @@
1599
1535
  flex-shrink: 0;
1600
1536
  transition: transform var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
1601
1537
  }
1602
- .ui-disclosure[open] .disclosure__icon {
1538
+ .ui-disclosure[open] .ui-disclosure__icon {
1603
1539
  transform: rotate(180deg);
1604
1540
  }
1605
1541
  .ui-disclosure__content {
1606
1542
  padding: 0 var(--ui-_padding-x) var(--ui-_padding-y);
1607
1543
  }
1608
- .ui-disclosure--animate .disclosure__content {
1544
+ .ui-disclosure--animate .ui-disclosure__content {
1609
1545
  animation: disclosure-open var(--ui-duration-normal, 200ms) var(--ui-ease-default, ease);
1610
1546
  }
1611
1547
  @keyframes disclosure-open {
@@ -1623,280 +1559,472 @@
1623
1559
  border: none;
1624
1560
  border-radius: 0;
1625
1561
  }
1626
- .ui-disclosure--flush .disclosure__trigger {
1562
+ .ui-disclosure--flush .ui-disclosure__trigger {
1627
1563
  padding-inline: 0;
1628
1564
  }
1629
- .ui-disclosure--flush .disclosure__content {
1565
+ .ui-disclosure--flush .ui-disclosure__content {
1630
1566
  padding-inline: 0;
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.divider--dashed::before,
1699
- .ui-divider--vertical.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%)));
1713
- }
1714
- .ui-drawer--sm {
1715
- --ui-_size: calc(0.5rem * 30);
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));
1716
1646
  }
1717
- .ui-drawer--lg {
1718
- --ui-_size: calc(0.5rem * 50);
1647
+ .ui-progress--sm {
1648
+ --ui-_height: calc(0.5rem * 1);
1719
1649
  }
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 {
1880
- display: flex;
1881
- flex-shrink: 0;
1882
- 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);
1829
+ .ui-toast--warning {
1830
+ --ui-_border-color: var(--ui-color-warning);
1887
1831
  }
1888
- }
1889
- @layer components.tokens {
1890
- .ui-field {
1891
- --ui-_gap: var(--ui-field-gap, 0);
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);
1892
1837
  }
1893
1838
  }
1894
1839
  @layer components.styles {
1895
- .ui-field {
1840
+ .ui-toast-viewport {
1896
1841
  display: flex;
1897
1842
  flex-direction: column;
1898
1843
  gap: var(--ui-_gap);
1899
- }
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 {
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;
1912
+ flex-shrink: 0;
1913
+ align-items: center;
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;
2015
+ }
2016
+ }
2017
+ @layer components.tokens {
2018
+ .ui-field {
2019
+ --ui-_gap: var(--ui-field-gap, 0);
2020
+ }
2021
+ }
2022
+ @layer components.styles {
2023
+ .ui-field {
2024
+ display: flex;
2025
+ flex-direction: column;
2026
+ gap: var(--ui-_gap);
2027
+ }
1900
2028
  .ui-field__control {
1901
2029
  display: flex;
1902
2030
  flex-direction: column;
@@ -1906,12 +2034,12 @@
1906
2034
  flex-wrap: wrap;
1907
2035
  align-items: flex-start;
1908
2036
  }
1909
- .ui-field--horizontal > .field__label {
2037
+ .ui-field--horizontal > .ui-field__label {
1910
2038
  flex: 0 0 auto;
1911
2039
  min-inline-size: calc(0.5rem * 15);
1912
2040
  padding-block-start: calc(0.5rem * 1);
1913
2041
  }
1914
- .ui-field--horizontal > .field__control {
2042
+ .ui-field--horizontal > .ui-field__control {
1915
2043
  flex: 1 1 0;
1916
2044
  min-inline-size: calc(0.5rem * 20);
1917
2045
  }
@@ -1954,167 +2082,68 @@
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));
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)));
1990
2120
  }
1991
2121
  }
1992
2122
  @layer components.styles {
1993
- .ui-heading {
1994
- margin: 0;
2123
+ .ui-input {
2124
+ display: inline-flex;
2125
+ align-items: center;
2126
+ block-size: var(--ui-_height);
2127
+ padding-inline: var(--ui-_padding-x);
2128
+ font-family: inherit;
1995
2129
  font-size: var(--ui-_font-size);
1996
- font-weight: var(--ui-_weight);
1997
- line-height: var(--ui-_line-height);
1998
- color: var(--ui-_color);
2130
+ line-height: 1;
2131
+ color: var(--ui-_text);
2132
+ background: var(--ui-_bg);
2133
+ border: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
2134
+ border-radius: var(--ui-_radius);
2135
+ 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);
1999
2136
  }
2000
- }
2001
- @layer components.tokens {
2002
- .ui-icon {
2003
- --ui-_size: var(--ui-icon-size, 1em);
2004
- --ui-_stroke: var(--ui-icon-stroke, 2);
2137
+ .ui-input::placeholder {
2138
+ color: var(--ui-_placeholder);
2005
2139
  }
2006
- .ui-icon--xs {
2007
- --ui-_size: var(--ui-icon-size-xs, calc(0.5rem * 2));
2008
- }
2009
- .ui-icon--sm {
2010
- --ui-_size: var(--ui-icon-size-sm, calc(0.5rem * 3));
2011
- }
2012
- .ui-icon--md {
2013
- --ui-_size: var(--ui-icon-size-md, calc(0.5rem * 4));
2014
- }
2015
- .ui-icon--lg {
2016
- --ui-_size: var(--ui-icon-size-lg, calc(0.5rem * 5));
2017
- }
2018
- .ui-icon--xl {
2019
- --ui-_size: var(--ui-icon-size-xl, calc(0.5rem * 6));
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, hsl(220, 85%, 50%)));
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, hsl(0, 70%, 50%)));
2086
- --ui-_border-color-focus: var(--ui-input-error-border, var(--ui-color-danger, hsl(0, 70%, 50%)));
2087
- }
2088
- .ui-input--success {
2089
- --ui-_border-color: var(--ui-input-success-border, var(--ui-color-success, hsl(142, 70%, 45%)));
2090
- --ui-_border-color-focus: var(--ui-input-success-border, var(--ui-color-success, hsl(142, 70%, 45%)));
2091
- }
2092
- }
2093
- @layer components.styles {
2094
- .ui-input {
2095
- display: inline-flex;
2096
- align-items: center;
2097
- block-size: var(--ui-_height);
2098
- padding-inline: var(--ui-_padding-x);
2099
- font-family: inherit;
2100
- font-size: var(--ui-_font-size);
2101
- line-height: 1;
2102
- color: var(--ui-_text);
2103
- background: var(--ui-_bg);
2104
- border: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
2105
- border-radius: var(--ui-_radius);
2106
- 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);
2107
- }
2108
- .ui-input::placeholder {
2109
- color: var(--ui-_placeholder);
2110
- }
2111
- .ui-input:hover:not(:disabled, :focus) {
2112
- border-color: var(--ui-color-border-strong, hsl(220, 10%, 80%));
2140
+ .ui-input:hover:not(:disabled, :focus) {
2141
+ border-color: var(--ui-color-border-strong, hsl(220, 10%, 80%));
2113
2142
  }
2114
2143
  .ui-input:focus, .ui-input--focus {
2115
2144
  border-color: var(--ui-_border-color-focus);
2116
2145
  outline: none;
2117
- box-shadow: 0 0 0 var(--ui-border-width-md, 0.125rem) var(--ui-color-focus, hsl(220, 85%, 65%));
2146
+ box-shadow: 0 0 0 var(--ui-border-width-md, 0.125rem) var(--ui-color-focus, oklch(75% 0.15 250deg));
2118
2147
  }
2119
2148
  .ui-input:disabled, .ui-input--disabled {
2120
2149
  opacity: 0.5;
@@ -2131,13 +2160,13 @@
2131
2160
  align-items: stretch;
2132
2161
  position: relative;
2133
2162
  }
2134
- .ui-input-group .input {
2163
+ .ui-input-group .ui-input {
2135
2164
  flex: 1;
2136
2165
  }
2137
- .ui-input-group--has-prefix .input {
2166
+ .ui-input-group--has-prefix .ui-input {
2138
2167
  padding-inline-start: calc(var(--ui-_height) + var(--ui-space-half, 0.25rem));
2139
2168
  }
2140
- .ui-input-group--has-suffix .input {
2169
+ .ui-input-group--has-suffix .ui-input {
2141
2170
  padding-inline-end: calc(var(--ui-_height) + var(--ui-space-half, 0.25rem));
2142
2171
  }
2143
2172
  .ui-input-group__addon {
@@ -2165,7 +2194,7 @@
2165
2194
  .ui-label {
2166
2195
  --ui-_font-size: var(--ui-label-font-size, var(--ui-font-size-sm, 0.875rem));
2167
2196
  --ui-_color: var(--ui-label-color, var(--ui-color-text, hsl(220, 10%, 10%)));
2168
- --ui-_required-color: var(--ui-label-required-color, var(--ui-color-danger, hsl(0, 70%, 50%)));
2197
+ --ui-_required-color: var(--ui-label-required-color, var(--ui-color-danger, oklch(60% 0.22 25deg)));
2169
2198
  }
2170
2199
  .ui-label--lg {
2171
2200
  --ui-_font-size: var(--ui-label-font-size-lg, var(--ui-font-size-md, 1rem));
@@ -2195,844 +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, hsl(0, 70%, 50%));
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, hsl(0, 70%, 50%));
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 .modal__content,
2405
- .ui-modal--visible .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 .modal__content,
2410
- .ui-modal--hidden .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 .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-overlay {
2424
- --ui-_bg: var(--ui-overlay-bg, rgb(0 0 0 / 0.5));
2425
- --ui-_z: var(--ui-overlay-z, var(--ui-z-overlay, 300));
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));
2426
2468
  }
2427
- .ui-overlay--light {
2428
- --ui-_bg: var(--ui-overlay-bg-light, rgb(255 255 255 / 0.7));
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);
2429
2474
  }
2430
- .ui-overlay--blur {
2431
- --ui-_bg: var(--ui-overlay-bg-blur, rgb(0 0 0 / 0.3));
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);
2432
2480
  }
2433
2481
  }
2434
2482
  @layer components.styles {
2435
- .ui-overlay {
2436
- position: fixed;
2483
+ .ui-toggle {
2484
+ display: inline-flex;
2485
+ flex-shrink: 0;
2486
+ align-items: center;
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);
2492
+ cursor: pointer;
2493
+ transition: background var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
2494
+ }
2495
+ .ui-toggle__input {
2496
+ position: absolute;
2437
2497
  inset: 0;
2438
- z-index: var(--ui-_z);
2439
- background: var(--ui-_bg);
2498
+ block-size: 100%;
2499
+ inline-size: 100%;
2500
+ margin: 0;
2501
+ opacity: 0;
2502
+ cursor: pointer;
2440
2503
  }
2441
- .ui-overlay--blur {
2442
- backdrop-filter: blur(calc(0.5rem * 0.5));
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);
2443
2510
  }
2444
- .ui-overlay--entering,
2445
- .ui-overlay--visible {
2446
- opacity: 1;
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);
2447
2521
  }
2448
- .ui-overlay--exiting,
2449
- .ui-overlay--hidden {
2450
- opacity: 0;
2451
- pointer-events: none;
2522
+ .ui-toggle__input:checked ~ .ui-toggle__track {
2523
+ background: var(--ui-_track-bg-checked);
2452
2524
  }
2453
- .ui-overlay--animate {
2454
- transition: opacity var(--ui-duration-normal, 200ms) var(--ui-ease-default, ease);
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));
2527
+ }
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);
2531
+ }
2532
+ .ui-toggle__input:disabled ~ .ui-toggle__track,
2533
+ .ui-toggle__input:disabled ~ .ui-toggle__thumb {
2534
+ opacity: 0.5;
2535
+ cursor: not-allowed;
2536
+ }
2537
+ .ui-toggle:has(.ui-toggle__input:disabled) {
2538
+ cursor: not-allowed;
2455
2539
  }
2456
2540
  }
2457
2541
  @layer components.tokens {
2458
- .ui-pagination {
2459
- --ui-_gap: var(--ui-pagination-gap, calc(0.5rem * 0.5));
2460
- --ui-_item-size: var(--ui-pagination-item-size, calc(0.5rem * 4));
2461
- --ui-_item-radius: var(--ui-pagination-item-radius, var(--ui-radius-sm, 0.25rem));
2462
- --ui-_item-bg: var(--ui-pagination-item-bg, transparent);
2463
- --ui-_item-bg-hover: var(--ui-pagination-item-bg-hover, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
2464
- --ui-_item-bg-active: var(--ui-pagination-item-bg-active, var(--ui-color-primary));
2465
- --ui-_item-color: var(--ui-pagination-item-color, var(--ui-color-text, hsl(220, 10%, 10%)));
2466
- --ui-_item-color-active: var(--ui-pagination-item-color-active, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
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));
2467
2547
  }
2468
2548
  }
2469
2549
  @layer components.styles {
2470
- .ui-pagination {
2550
+ .ui-divider {
2471
2551
  display: flex;
2472
2552
  align-items: center;
2473
- gap: var(--ui-_gap);
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);
2474
2558
  }
2475
- .ui-pagination__list {
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);
2565
+ }
2566
+ .ui-divider:not(:empty) {
2567
+ --ui-_height: var(--ui-row-1, 1rem);
2568
+ }
2569
+ .ui-divider:not(:empty)::before {
2570
+ margin-inline-end: calc(0.5rem * 2);
2571
+ }
2572
+ .ui-divider:not(:empty)::after {
2573
+ margin-inline-start: calc(0.5rem * 2);
2574
+ }
2575
+ .ui-divider:empty::after {
2576
+ display: none;
2577
+ }
2578
+ .ui-divider--vertical {
2579
+ flex-direction: column;
2580
+ align-self: stretch;
2581
+ margin: 0 var(--ui-_gap);
2582
+ writing-mode: vertical-rl;
2583
+ }
2584
+ .ui-divider--vertical::before,
2585
+ .ui-divider--vertical::after {
2586
+ flex: 1;
2587
+ block-size: auto;
2588
+ inline-size: var(--ui-_size);
2589
+ }
2590
+ .ui-divider--start::before {
2591
+ display: none;
2592
+ }
2593
+ .ui-divider--start:not(:empty)::after {
2594
+ margin-inline-start: calc(0.5rem * 2);
2595
+ }
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);
2609
+ }
2610
+ }
2611
+ @layer components.tokens {
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));
2618
+ }
2619
+ }
2620
+ @layer components.styles {
2621
+ .ui-breadcrumb {
2476
2622
  display: flex;
2623
+ flex-wrap: wrap;
2477
2624
  align-items: center;
2478
2625
  gap: var(--ui-_gap);
2626
+ block-size: var(--ui-_height);
2479
2627
  padding: 0;
2480
2628
  margin: 0;
2629
+ font-size: var(--ui-font-size-sm, 0.875rem);
2630
+ line-height: 1;
2481
2631
  list-style: none;
2482
2632
  }
2483
- .ui-pagination__item {
2633
+ .ui-breadcrumb__item {
2484
2634
  display: flex;
2485
- }
2486
- .ui-pagination__link {
2487
- display: inline-flex;
2488
2635
  align-items: center;
2489
- justify-content: center;
2490
- block-size: var(--ui-_item-size);
2491
- min-inline-size: var(--ui-_item-size);
2492
- padding-inline: calc(0.5rem * 1);
2493
- font-size: var(--ui-font-size-sm, 0.875rem);
2494
- text-decoration: none;
2495
- color: var(--ui-_item-color);
2496
- background: var(--ui-_item-bg);
2497
- border-radius: var(--ui-_item-radius);
2498
- transition: background var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease), color var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
2499
- }
2500
- .ui-pagination__link:hover {
2501
- background: var(--ui-_item-bg-hover);
2636
+ gap: var(--ui-_gap);
2637
+ block-size: var(--ui-_height);
2502
2638
  }
2503
- .ui-pagination__link[aria-current=page],
2504
- .ui-pagination__link--active {
2505
- color: var(--ui-_item-color-active);
2506
- background: var(--ui-_item-bg-active);
2507
- pointer-events: none;
2639
+ .ui-breadcrumb__item:not(:last-child)::after {
2640
+ content: var(--ui-breadcrumb-separator, "/");
2641
+ color: var(--ui-_separator-color);
2508
2642
  }
2509
- .ui-pagination__link[aria-disabled=true],
2510
- .ui-pagination__link--disabled {
2511
- opacity: 0.5;
2512
- 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);
2513
2647
  }
2514
- .ui-pagination__prev,
2515
- .ui-pagination__next {
2516
- display: inline-flex;
2517
- align-items: center;
2518
- gap: calc(0.5rem * 0.5);
2519
- padding-inline: calc(0.5rem * 1.5);
2648
+ .ui-breadcrumb__link:hover {
2649
+ text-decoration: underline;
2650
+ color: var(--ui-color-primary);
2520
2651
  }
2521
- .ui-pagination__ellipsis {
2522
- display: inline-flex;
2523
- align-items: center;
2524
- justify-content: center;
2525
- block-size: var(--ui-_item-size);
2526
- min-inline-size: var(--ui-_item-size);
2527
- color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
2652
+ .ui-breadcrumb__item:last-child .ui-breadcrumb__link,
2653
+ .ui-breadcrumb__current {
2654
+ color: var(--ui-_current-color);
2655
+ pointer-events: none;
2528
2656
  }
2529
- .ui-pagination--sm {
2530
- --ui-_item-size: calc(0.5rem * 3);
2531
- --ui-_gap: calc(0.5rem * 0.25);
2657
+ .ui-breadcrumb__item--hidden {
2658
+ display: none;
2532
2659
  }
2533
- .ui-pagination--lg {
2534
- --ui-_item-size: calc(0.5rem * 5);
2535
- --ui-_gap: calc(0.5rem * 0.75);
2660
+ .ui-breadcrumb__ellipsis {
2661
+ color: var(--ui-_separator-color);
2536
2662
  }
2537
2663
  }
2538
2664
  @layer components.tokens {
2539
- .ui-popover {
2540
- --ui-_bg: var(--ui-popover-bg, var(--ui-color-bg, white));
2541
- --ui-_border-color: var(--ui-popover-border-color, var(--ui-color-border, rgb(0 0 0 / 0.1)));
2542
- --ui-_radius: var(--ui-popover-radius, var(--ui-radius-md, calc(0.5rem * 1)));
2543
- --ui-_shadow: var(--ui-popover-shadow, 0 calc(0.5rem / 2) calc(0.5rem * 2) rgb(0 0 0 / 0.15));
2544
- --ui-_padding: var(--ui-popover-padding, calc(0.5rem * 2));
2545
- --ui-_max-width: var(--ui-popover-max-width, calc(0.5rem * 40));
2546
- --ui-_z: var(--ui-popover-z, var(--ui-z-popover, 500));
2547
- --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%)));
2548
2676
  }
2549
2677
  }
2550
2678
  @layer components.styles {
2551
- .ui-popover {
2552
- position: absolute;
2553
- z-index: var(--ui-_z);
2554
- 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);
2555
2682
  padding: var(--ui-_padding);
2556
- line-height: var(--ui-row-1, 1rem);
2683
+ overflow-y: auto;
2557
2684
  background: var(--ui-_bg);
2558
2685
  border-radius: var(--ui-_radius);
2559
2686
  outline: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
2560
2687
  box-shadow: var(--ui-_shadow);
2561
2688
  outline-offset: calc(var(--ui-border-width-sm, 0.0625rem) * -1);
2562
2689
  }
2563
- .ui-popover__header {
2564
- padding-block-end: calc(0.5rem * 2);
2565
- margin-block-end: calc(0.5rem * 2);
2566
- box-shadow: inset 0 calc(var(--ui-border-width-sm, 1px) * -1) 0 var(--ui-_border-color);
2567
- }
2568
- .ui-popover__title {
2690
+ .ui-menu__group {
2691
+ padding: 0;
2569
2692
  margin: 0;
2570
- font-size: var(--ui-font-size-md, 1rem);
2571
- font-weight: var(--ui-weight-semibold, 600);
2693
+ list-style: none;
2572
2694
  }
2573
- .ui-popover--top::after {
2574
- content: "";
2575
- position: absolute;
2576
- inset-block-start: 100%;
2577
- inset-inline-start: 50%;
2578
- border: var(--ui-_arrow-size) solid transparent;
2579
- border-block-start-color: var(--ui-_bg);
2580
- 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%));
2581
2703
  }
2582
- .ui-popover--top::before {
2583
- content: "";
2584
- position: absolute;
2585
- inset-block-start: 100%;
2586
- inset-inline-start: 50%;
2587
- border: calc(var(--ui-_arrow-size) + 1px) solid transparent;
2588
- border-block-start-color: var(--ui-_border-color);
2589
- 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);
2590
2718
  }
2591
- .ui-popover--bottom::after {
2592
- content: "";
2593
- position: absolute;
2594
- inset-block-end: 100%;
2595
- inset-inline-start: 50%;
2596
- border: var(--ui-_arrow-size) solid transparent;
2597
- border-block-end-color: var(--ui-_bg);
2598
- transform: translateX(-50%);
2719
+ .ui-menu__item:hover, .ui-menu__item:focus-visible {
2720
+ background: var(--ui-_item-bg-hover);
2721
+ outline: none;
2599
2722
  }
2600
- .ui-popover--bottom::before {
2601
- content: "";
2602
- position: absolute;
2603
- inset-block-end: 100%;
2604
- inset-inline-start: 50%;
2605
- border: calc(var(--ui-_arrow-size) + 1px) solid transparent;
2606
- border-block-end-color: var(--ui-_border-color);
2607
- transform: translateX(-50%);
2723
+ .ui-menu__item--danger {
2724
+ color: var(--ui-color-danger, oklch(60% 0.22 25deg));
2608
2725
  }
2609
- .ui-popover--visible {
2610
- 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));
2611
2728
  }
2612
- .ui-popover--hidden {
2613
- opacity: 0;
2729
+ .ui-menu__item--disabled,
2730
+ .ui-menu__item[aria-disabled=true] {
2731
+ opacity: 0.5;
2614
2732
  pointer-events: none;
2615
2733
  }
2616
- .ui-popover--animate {
2617
- transition: opacity var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
2618
- }
2619
- }
2620
- @layer components.tokens {
2621
- .ui-progress {
2622
- --ui-_height: var(--ui-progress-height, calc(0.5rem * 1));
2623
- --ui-_bg: var(--ui-progress-bg, var(--ui-color-bg-subtle, rgb(0 0 0 / 0.1)));
2624
- --ui-_fill: var(--ui-progress-fill, var(--ui-color-primary));
2625
- --ui-_radius: var(--ui-progress-radius, var(--ui-radius-full, 9999px));
2626
- }
2627
- .ui-progress--sm {
2628
- --ui-_height: calc(0.5rem * 1);
2629
- }
2630
- .ui-progress--lg {
2631
- --ui-_height: calc(0.5rem * 2);
2632
- }
2633
- }
2634
- @layer components.styles {
2635
- .ui-progress {
2636
- position: relative;
2637
- block-size: var(--ui-_height);
2638
- overflow: hidden;
2639
- background: var(--ui-_bg);
2640
- border-radius: var(--ui-_radius);
2641
- }
2642
- .ui-progress__bar {
2643
- block-size: 100%;
2644
- background: var(--ui-_fill);
2645
- border-radius: var(--ui-_radius);
2646
- transition: inline-size var(--ui-duration-normal, 200ms) var(--ui-ease-default, ease);
2647
- }
2648
- .ui-progress--indeterminate .progress__bar {
2649
- inline-size: 30%;
2650
- animation: progress-indeterminate 1.5s infinite ease-in-out;
2651
- }
2652
- @keyframes progress-indeterminate {
2653
- 0% {
2654
- transform: translateX(-100%);
2655
- }
2656
- 100% {
2657
- transform: translateX(400%);
2658
- }
2659
- }
2660
- .ui-progress--striped .progress__bar {
2661
- 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);
2662
- background-size: 0.5rem 0.5rem;
2663
- }
2664
- .ui-progress--animated .progress__bar {
2665
- animation: progress-stripes 1s linear infinite;
2666
- }
2667
- @keyframes progress-stripes {
2668
- from {
2669
- background-position: 0.5rem 0;
2670
- }
2671
- to {
2672
- background-position: 0 0;
2673
- }
2674
- }
2675
- .ui-progress--success {
2676
- --ui-_fill: var(--ui-color-success);
2677
- }
2678
- .ui-progress--warning {
2679
- --ui-_fill: var(--ui-color-warning);
2680
- }
2681
- .ui-progress--danger {
2682
- --ui-_fill: var(--ui-color-danger);
2683
- }
2684
- }
2685
- @layer components.tokens {
2686
- .ui-radio {
2687
- --ui-_size: var(--ui-radio-size, calc(0.5rem * 2));
2688
- --ui-_bg: var(--ui-radio-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
2689
- --ui-_bg-checked: var(--ui-radio-bg-checked, var(--ui-color-primary, hsl(220, 85%, 50%)));
2690
- --ui-_border-color: var(--ui-radio-border-color, var(--ui-color-border-strong, hsl(220, 10%, 80%)));
2691
- --ui-_border-color-focus: var(--ui-radio-border-color-focus, var(--ui-color-primary, hsl(220, 85%, 50%)));
2692
- --ui-_dot-color: var(--ui-radio-dot-color, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
2693
- }
2694
- .ui-radio--lg {
2695
- --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);
2696
2738
  }
2697
- .ui-radio--error {
2698
- --ui-_border-color: var(--ui-radio-error-border, var(--ui-color-danger, hsl(0, 70%, 50%)));
2699
- --ui-_border-color-focus: var(--ui-radio-error-border, var(--ui-color-danger, hsl(0, 70%, 50%)));
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%));
2700
2743
  }
2701
- }
2702
- @layer components.styles {
2703
- .ui-radio {
2704
- display: inline-flex;
2705
- flex-shrink: 0;
2744
+ .ui-menu__separator {
2745
+ display: flex;
2706
2746
  align-items: center;
2707
- justify-content: center;
2708
- block-size: var(--ui-_size);
2709
- inline-size: var(--ui-_size);
2747
+ block-size: calc(0.5rem * 2);
2710
2748
  margin: 0;
2711
- vertical-align: middle;
2712
- background: var(--ui-_bg);
2713
- border: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
2714
- border-radius: 50%;
2715
- cursor: pointer;
2716
- appearance: none;
2717
- 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);
2718
2749
  }
2719
- .ui-radio::before {
2750
+ .ui-menu__separator::before {
2720
2751
  content: "";
2721
- block-size: 50%;
2722
- inline-size: 50%;
2723
- background-color: var(--ui-_dot-color);
2724
- border-radius: 50%;
2725
- opacity: 0;
2726
- transform: scale(0);
2727
- transition: opacity var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), transform var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
2728
- }
2729
- .ui-radio:hover:not(:disabled) {
2730
- border-color: var(--ui-_border-color-focus);
2731
- }
2732
- .ui-radio:focus-visible {
2733
- border-color: var(--ui-_border-color-focus);
2734
- outline: none;
2735
- box-shadow: 0 0 0 var(--ui-border-width-md, 0.125rem) var(--ui-color-focus, hsl(220, 85%, 65%));
2736
- }
2737
- .ui-radio:checked {
2738
- background: var(--ui-_bg-checked);
2739
- 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%));
2740
2755
  }
2741
- .ui-radio:checked::before {
2742
- opacity: 1;
2743
- transform: scale(1);
2756
+ .ui-menu__item--check,
2757
+ .ui-menu__item--radio {
2758
+ position: relative;
2759
+ padding-inline-start: calc(0.5rem * 4);
2744
2760
  }
2745
- .ui-radio:disabled {
2746
- opacity: 0.5;
2747
- 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);
2748
2769
  }
2749
2770
  }
2750
2771
  @layer components.tokens {
2751
- .ui-select {
2752
- --ui-_height: var(--ui-select-height, var(--ui-row-2, 2rem));
2753
- --ui-_padding-x: var(--ui-select-padding-x, var(--ui-space-1, 0.5rem));
2754
- --ui-_font-size: var(--ui-select-font-size, var(--ui-font-size-sm, 0.875rem));
2755
- --ui-_radius: var(--ui-select-radius, var(--ui-radius-md, 0.5rem));
2756
- --ui-_bg: var(--ui-select-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
2757
- --ui-_border-color: var(--ui-select-border-color, var(--ui-color-border-strong, hsl(220, 10%, 80%)));
2758
- --ui-_border-color-focus: var(--ui-select-border-color-focus, var(--ui-color-primary, hsl(220, 85%, 50%)));
2759
- --ui-_text: var(--ui-select-text, var(--ui-color-text, hsl(220, 10%, 10%)));
2760
- --ui-_icon-color: var(--ui-select-icon-color, var(--ui-color-text-muted, hsl(220, 10%, 45%)));
2761
- }
2762
- .ui-select--sm {
2763
- --ui-_height: var(--ui-select-height-sm, calc(1rem * 1.5));
2764
- --ui-_font-size: var(--ui-select-font-size-sm, var(--ui-font-size-xs, 0.75rem));
2765
- }
2766
- .ui-select--lg {
2767
- --ui-_height: var(--ui-select-height-lg, calc(1rem * 2.5));
2768
- --ui-_padding-x: var(--ui-select-padding-x-lg, var(--ui-space-2, 1rem));
2769
- --ui-_font-size: var(--ui-select-font-size-lg, var(--ui-font-size-md, 1rem));
2770
- }
2771
- .ui-select--filled {
2772
- --ui-_bg: var(--ui-select-filled-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
2773
- --ui-_border-color: transparent;
2774
- }
2775
- .ui-select--ghost {
2776
- --ui-_bg: transparent;
2777
- --ui-_border-color: transparent;
2778
- }
2779
- .ui-select--error {
2780
- --ui-_border-color: var(--ui-select-error-border, var(--ui-color-danger, hsl(0, 70%, 50%)));
2781
- --ui-_border-color-focus: var(--ui-select-error-border, var(--ui-color-danger, hsl(0, 70%, 50%)));
2782
- }
2783
- .ui-select--success {
2784
- --ui-_border-color: var(--ui-select-success-border, var(--ui-color-success, hsl(142, 70%, 45%)));
2785
- --ui-_border-color-focus: var(--ui-select-success-border, var(--ui-color-success, hsl(142, 70%, 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%)));
2783
+ }
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%)));
2786
2788
  }
2787
2789
  }
2788
2790
  @layer components.styles {
2789
- .ui-select {
2790
- display: inline-block;
2791
- block-size: var(--ui-_height);
2792
- padding-inline-start: var(--ui-_padding-x);
2793
- padding-inline-end: calc(var(--ui-_height) - var(--ui-space-half, 0.25rem));
2794
- font-family: inherit;
2795
- font-size: var(--ui-_font-size);
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);
2801
+ }
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);
2796
2811
  line-height: 1;
2797
- color: var(--ui-_text);
2798
- background-color: var(--ui-_bg);
2799
- 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");
2800
- border: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
2801
- border-radius: var(--ui-_radius);
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;
2802
2818
  cursor: pointer;
2803
- appearance: none;
2804
- 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);
2805
- background-repeat: no-repeat;
2806
- background-position: right var(--ui-space-half, 0.25rem) center;
2807
- background-size: calc(var(--ui-_height) * 0.5);
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);
2808
2820
  }
2809
- .ui-select:hover:not(:disabled, :focus) {
2810
- border-color: var(--ui-color-border-strong, hsl(220, 10%, 80%));
2821
+ .ui-nav__item:hover {
2822
+ color: var(--ui-_item-color-hover);
2811
2823
  }
2812
- .ui-select:focus, .ui-select--focus {
2813
- border-color: var(--ui-_border-color-focus);
2814
- outline: none;
2815
- box-shadow: 0 0 0 var(--ui-border-width-md, 0.125rem) var(--ui-color-focus, hsl(220, 85%, 65%));
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);
2816
2827
  }
2817
- .ui-select:disabled, .ui-select--disabled {
2828
+ .ui-nav__item--disabled {
2818
2829
  opacity: 0.5;
2819
- cursor: not-allowed;
2820
- }
2821
- .ui-select--block {
2822
- inline-size: 100%;
2823
- }
2824
- .ui-select:invalid, .ui-select--placeholder {
2825
- color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
2826
- }
2827
- }
2828
- @layer components.tokens {
2829
- .ui-skeleton {
2830
- --ui-_bg: var(--ui-skeleton-bg, var(--ui-color-bg-subtle, rgb(0 0 0 / 0.1)));
2831
- --ui-_shimmer: var(--ui-skeleton-shimmer, rgb(255 255 255 / 0.5));
2832
- --ui-_radius: var(--ui-skeleton-radius, var(--ui-radius-sm, calc(0.5rem / 2)));
2833
- }
2834
- }
2835
- @layer components.styles {
2836
- .ui-skeleton {
2837
- display: block;
2838
- position: relative;
2839
- overflow: hidden;
2840
- background: var(--ui-_bg);
2841
- border-radius: var(--ui-_radius);
2842
- }
2843
- .ui-skeleton::after {
2844
- content: "";
2845
- position: absolute;
2846
- inset: 0;
2847
- background: linear-gradient(90deg, transparent 0%, var(--ui-_shimmer) 50%, transparent 100%);
2848
- animation: skeleton-shimmer 1.5s infinite;
2849
- transform: translateX(-100%);
2850
- }
2851
- @keyframes skeleton-shimmer {
2852
- 100% {
2853
- transform: translateX(100%);
2854
- }
2855
- }
2856
- .ui-skeleton--text {
2857
- block-size: calc(0.5rem * 2);
2858
- inline-size: 100%;
2859
- }
2860
- .ui-skeleton--heading {
2861
- block-size: calc(0.5rem * 3);
2862
- inline-size: 60%;
2863
- }
2864
- .ui-skeleton--circle {
2865
- block-size: calc(0.5rem * 5);
2866
- inline-size: calc(0.5rem * 5);
2867
- border-radius: 50%;
2868
- }
2869
- .ui-skeleton--rect {
2870
- block-size: calc(0.5rem * 20);
2871
- inline-size: 100%;
2872
- }
2873
- .ui-skeleton--static::after {
2874
- animation: none;
2875
- }
2876
- .ui-skeleton--pulse {
2877
- animation: skeleton-pulse 1.5s infinite ease-in-out;
2830
+ pointer-events: none;
2878
2831
  }
2879
- .ui-skeleton--pulse::after {
2880
- display: none;
2832
+ .ui-nav--pills .ui-nav__list {
2833
+ box-shadow: none;
2881
2834
  }
2882
- @keyframes skeleton-pulse {
2883
- 0%, 100% {
2884
- opacity: 1;
2885
- }
2886
- 50% {
2887
- opacity: 0.5;
2888
- }
2835
+ .ui-nav--pills .ui-nav__item {
2836
+ border-radius: var(--ui-_item-radius);
2837
+ box-shadow: none;
2889
2838
  }
2890
- }
2891
- @layer components.tokens {
2892
- .ui-spinner {
2893
- --ui-_size: var(--ui-spinner-size, calc(var(--ui-unit) * 4));
2894
- --ui-_border-width: var(--ui-spinner-border-width, var(--ui-border-width-md));
2895
- --ui-_color: var(--ui-spinner-color, currentcolor);
2896
- --ui-_track-color: var(--ui-spinner-track-color, transparent);
2897
- --ui-_duration: var(--ui-spinner-duration, 750ms);
2839
+ .ui-nav--pills .ui-nav__item:hover {
2840
+ background: var(--ui-_item-bg-hover);
2898
2841
  }
2899
- .ui-spinner--xs {
2900
- --ui-_size: var(--ui-spinner-size-xs, calc(var(--ui-unit) * 2));
2901
- --ui-_border-width: var(--ui-spinner-border-width-xs, var(--ui-border-width-sm));
2842
+ .ui-nav--pills .ui-nav__item--active {
2843
+ color: var(--ui-_item-color-active);
2844
+ background: var(--ui-_item-bg-active);
2902
2845
  }
2903
- .ui-spinner--sm {
2904
- --ui-_size: var(--ui-spinner-size-sm, calc(var(--ui-unit) * 3));
2905
- --ui-_border-width: var(--ui-spinner-border-width-sm, var(--ui-border-width-md));
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);
2906
2851
  }
2907
- .ui-spinner--lg {
2908
- --ui-_size: var(--ui-spinner-size-lg, calc(var(--ui-unit) * 5));
2909
- --ui-_border-width: var(--ui-spinner-border-width-lg, var(--ui-border-width-md));
2852
+ .ui-nav--vertical .ui-nav__item {
2853
+ box-shadow: inset calc(var(--ui-border-width-md, 0.125rem) * -1) 0 0 transparent;
2910
2854
  }
2911
- .ui-spinner--xl {
2912
- --ui-_size: var(--ui-spinner-size-xl, calc(var(--ui-unit) * 6));
2913
- --ui-_border-width: var(--ui-spinner-border-width-xl, var(--ui-border-width-lg));
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);
2914
2857
  }
2915
- }
2916
- @layer components.styles {
2917
- .ui-spinner {
2918
- display: inline-block;
2919
- flex-shrink: 0;
2920
- box-sizing: border-box;
2921
- block-size: var(--ui-_size);
2922
- inline-size: var(--ui-_size);
2923
- vertical-align: middle;
2924
- border: var(--ui-_border-width) solid var(--ui-_track-color);
2925
- border-radius: 50%;
2926
- border-block-start-color: var(--ui-_color);
2927
- animation: spinner-rotate var(--ui-_duration) linear infinite;
2858
+ .ui-nav--vertical.ui-nav--pills .ui-nav__list {
2859
+ box-shadow: none;
2928
2860
  }
2929
- @keyframes spinner-rotate {
2930
- to {
2931
- transform: rotate(360deg);
2932
- }
2861
+ .ui-nav--vertical.ui-nav--pills .ui-nav__item {
2862
+ box-shadow: none;
2933
2863
  }
2934
2864
  }
2935
2865
  @layer components.tokens {
2936
- .ui-status {
2937
- --ui-_size: var(--ui-status-size, calc(0.5rem * 1));
2938
- --ui-_color: var(--ui-status-color, var(--ui-color-text-muted));
2939
- --ui-_gap: var(--ui-status-gap, calc(0.5rem * 1));
2940
- }
2941
- .ui-status--success {
2942
- --ui-_color: var(--ui-color-success);
2943
- }
2944
- .ui-status--warning {
2945
- --ui-_color: var(--ui-color-warning);
2946
- }
2947
- .ui-status--danger {
2948
- --ui-_color: var(--ui-color-danger);
2949
- }
2950
- .ui-status--info {
2951
- --ui-_color: var(--ui-color-primary);
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%)));
2952
2875
  }
2953
2876
  }
2954
2877
  @layer components.styles {
2955
- .ui-status {
2956
- display: inline-flex;
2878
+ .ui-pagination {
2879
+ display: flex;
2957
2880
  align-items: center;
2958
2881
  gap: var(--ui-_gap);
2959
2882
  }
2960
- .ui-status__dot {
2961
- flex-shrink: 0;
2962
- block-size: var(--ui-_size);
2963
- inline-size: var(--ui-_size);
2964
- background: var(--ui-_color);
2965
- border-radius: 50%;
2966
- }
2967
- .ui-status--pulse .status__dot {
2968
- position: relative;
2969
- }
2970
- .ui-status--pulse .status__dot::before {
2971
- content: "";
2972
- position: absolute;
2973
- inset: 0;
2974
- background: var(--ui-_color);
2975
- border-radius: 50%;
2976
- animation: status-pulse 2s infinite;
2977
- }
2978
- @keyframes status-pulse {
2979
- 0% {
2980
- opacity: 1;
2981
- transform: scale(1);
2982
- }
2983
- 100% {
2984
- opacity: 0;
2985
- transform: scale(2.5);
2986
- }
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;
2987
2890
  }
2988
- .ui-status--sm {
2989
- --ui-_size: calc(0.5rem * 0.75);
2990
- --ui-_gap: calc(0.5rem * 0.75);
2891
+ .ui-pagination__item {
2892
+ display: flex;
2991
2893
  }
2992
- .ui-status--lg {
2993
- --ui-_size: calc(0.5rem * 1.5);
2994
- --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);
2995
2907
  }
2996
- }
2997
- @layer components.tokens {
2998
- .ui-table {
2999
- --ui-_font-size: var(--ui-table-font-size, var(--ui-font-size-sm, 0.875rem));
3000
- --ui-_border-color: var(--ui-table-border-color, var(--ui-color-border, hsl(220, 10%, 90%)));
3001
- --ui-_header-bg: var(--ui-table-header-bg, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
3002
- --ui-_cell-padding-x: var(--ui-table-cell-padding-x, var(--ui-space-2, 1rem));
3003
- --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);
3004
2910
  }
3005
- .ui-table--compact {
3006
- --ui-_cell-padding-y: var(--ui-space-0, 0.25rem);
3007
- --ui-_cell-padding-x: var(--ui-space-1, 0.5rem);
3008
- --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;
3009
2916
  }
3010
- }
3011
- @layer components.styles {
3012
- .ui-table {
3013
- inline-size: 100%;
3014
- font-size: var(--ui-_font-size);
3015
- border-collapse: separate;
3016
- border-spacing: 0;
2917
+ .ui-pagination__link[aria-disabled=true],
2918
+ .ui-pagination__link--disabled {
2919
+ opacity: 0.5;
2920
+ pointer-events: none;
3017
2921
  }
3018
- .ui-table th,
3019
- .ui-table td {
3020
- padding-block-start: var(--ui-_cell-padding-y);
3021
- padding-block-end: calc(var(--ui-_cell-padding-y) - var(--ui-border-width-sm, 0.0625rem));
3022
- padding-inline: var(--ui-_cell-padding-x);
3023
- line-height: calc(var(--ui-unit, 0.5rem) * 3);
3024
- text-align: start;
3025
- 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);
3026
2928
  }
3027
- .ui-table th {
3028
- font-weight: var(--ui-weight-medium, 500);
3029
- 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%));
3030
2936
  }
3031
- .ui-table--striped tbody tr:nth-child(odd) {
3032
- 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);
3033
2940
  }
3034
- .ui-table--striped th {
3035
- 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);
3036
2944
  }
3037
2945
  }
3038
2946
  @layer components.tokens {
@@ -3076,9 +2984,9 @@
3076
2984
  color: var(--ui-color-text, hsl(220, 10%, 10%));
3077
2985
  }
3078
2986
  .ui-tabs__tab--active {
3079
- color: var(--ui-color-primary, hsl(220, 85%, 50%));
2987
+ color: var(--ui-color-primary, oklch(55% 0.22 250deg));
3080
2988
  background: var(--ui-_tab-bg-active);
3081
- box-shadow: inset 0 calc(var(--ui-border-width-md, 0.125rem) * -1) 0 var(--ui-color-primary, hsl(220, 85%, 50%));
2989
+ box-shadow: inset 0 calc(var(--ui-border-width-md, 0.125rem) * -1) 0 var(--ui-color-primary, oklch(55% 0.22 250deg));
3082
2990
  }
3083
2991
  .ui-tabs__panel {
3084
2992
  display: none;
@@ -3090,381 +2998,425 @@
3090
2998
  }
3091
2999
  }
3092
3000
  @layer components.tokens {
3093
- .ui-tag {
3094
- --ui-_height: var(--ui-tag-height, calc(0.5rem * 3));
3095
- --ui-_padding-x: var(--ui-tag-padding-x, var(--ui-space-1, 0.5rem));
3096
- --ui-_gap: var(--ui-tag-gap, calc(0.5rem * 0.5));
3097
- --ui-_radius: var(--ui-tag-radius, var(--ui-radius-full, 9999px));
3098
- --ui-_font-size: var(--ui-tag-font-size, var(--ui-font-size-sm, 0.875rem));
3099
- --ui-_bg: var(--ui-tag-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
3100
- --ui-_color: var(--ui-tag-color, var(--ui-color-text, hsl(220, 10%, 10%)));
3101
- }
3102
- .ui-tag--sm {
3103
- --ui-_height: var(--ui-tag-height-sm, calc(0.5rem * 2.5));
3104
- --ui-_padding-x: var(--ui-tag-padding-x-sm, calc(0.5rem * 1));
3105
- --ui-_font-size: var(--ui-tag-font-size-sm, var(--ui-font-size-xs, 0.75rem));
3106
- }
3107
- .ui-tag--primary {
3108
- --ui-_bg: var(--ui-tag-primary-bg, var(--ui-color-primary, hsl(220, 85%, 50%)));
3109
- --ui-_color: var(--ui-tag-primary-color, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
3110
- }
3111
- .ui-tag--success {
3112
- --ui-_bg: var(--ui-tag-success-bg, var(--ui-color-success, hsl(142, 70%, 45%)));
3113
- --ui-_color: var(--ui-tag-success-color, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
3114
- }
3115
- .ui-tag--warning {
3116
- --ui-_bg: var(--ui-tag-warning-bg, var(--ui-color-warning, hsl(38, 90%, 50%)));
3117
- --ui-_color: var(--ui-tag-warning-color, var(--ui-color-text, hsl(220, 10%, 10%)));
3118
- }
3119
- .ui-tag--danger {
3120
- --ui-_bg: var(--ui-tag-danger-bg, var(--ui-color-danger, hsl(0, 70%, 50%)));
3121
- --ui-_color: var(--ui-tag-danger-color, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
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)));
3122
3006
  }
3123
3007
  }
3124
3008
  @layer components.styles {
3125
- .ui-tag {
3126
- display: inline-flex;
3009
+ .ui-dialog .ui-modal__content {
3010
+ padding: 0;
3011
+ }
3012
+ .ui-dialog__header {
3013
+ display: flex;
3014
+ flex-shrink: 0;
3127
3015
  align-items: center;
3128
- gap: var(--ui-_gap);
3129
- block-size: var(--ui-_height);
3130
- padding-inline: var(--ui-_padding-x);
3131
- font-size: var(--ui-_font-size);
3132
- font-weight: var(--ui-weight-medium, 500);
3133
- line-height: 1;
3134
- white-space: nowrap;
3135
- color: var(--ui-_color);
3136
- background: var(--ui-_bg);
3137
- 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);
3138
3020
  }
3139
- .ui-tag:disabled, .ui-tag[aria-disabled=true] {
3140
- opacity: 0.5;
3141
- 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);
3142
3026
  }
3143
- .ui-tag__remove {
3144
- display: inline-flex;
3027
+ .ui-dialog__close {
3145
3028
  flex-shrink: 0;
3146
- align-items: center;
3147
- justify-content: center;
3148
- padding: 0;
3149
- margin-inline-start: calc(var(--ui-_gap) * -0.5);
3150
- color: currentcolor;
3151
- background: none;
3152
- border: none;
3153
- opacity: 0.7;
3154
- cursor: pointer;
3029
+ margin-inline-start: auto;
3155
3030
  }
3156
- .ui-tag__remove:hover {
3157
- opacity: 1;
3031
+ .ui-dialog__body {
3032
+ flex: 1 1 auto;
3033
+ padding: var(--ui-_body-padding);
3034
+ overflow-y: auto;
3158
3035
  }
3159
- .ui-tag-group {
3036
+ .ui-dialog__footer {
3160
3037
  display: flex;
3161
- flex-wrap: wrap;
3162
- 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;
3163
3050
  }
3164
3051
  }
3165
3052
  @layer components.tokens {
3166
- .ui-textarea {
3167
- --ui-_min-height: var(--ui-textarea-min-height, calc(1rem * 4));
3168
- --ui-_padding-x: var(--ui-textarea-padding-x, var(--ui-space-1, 0.5rem));
3169
- --ui-_padding-y: var(--ui-textarea-padding-y, var(--ui-space-1, 0.5rem));
3170
- --ui-_font-size: var(--ui-textarea-font-size, var(--ui-font-size-sm, 0.875rem));
3171
- --ui-_radius: var(--ui-textarea-radius, var(--ui-radius-md, 0.5rem));
3172
- --ui-_bg: var(--ui-textarea-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
3173
- --ui-_border-color: var(--ui-textarea-border-color, var(--ui-color-border-strong, hsl(220, 10%, 80%)));
3174
- --ui-_border-color-focus: var(--ui-textarea-border-color-focus, var(--ui-color-primary, hsl(220, 85%, 50%)));
3175
- --ui-_text: var(--ui-textarea-text, var(--ui-color-text, hsl(220, 10%, 10%)));
3176
- --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%)));
3177
3062
  }
3178
- .ui-textarea--sm {
3179
- --ui-_min-height: var(--ui-textarea-min-height-sm, calc(1rem * 3));
3180
- --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);
3181
3065
  }
3182
- .ui-textarea--lg {
3183
- --ui-_min-height: var(--ui-textarea-min-height-lg, calc(1rem * 6));
3184
- --ui-_padding-x: var(--ui-textarea-padding-x-lg, var(--ui-space-2, 1rem));
3185
- --ui-_padding-y: var(--ui-textarea-padding-y-lg, var(--ui-space-2, 1rem));
3186
- --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);
3187
3068
  }
3188
- .ui-textarea--filled {
3189
- --ui-_bg: var(--ui-textarea-filled-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
3190
- --ui-_border-color: transparent;
3069
+ .ui-drawer--full {
3070
+ --ui-_size: 100%;
3071
+ --ui-_max-size: 100%;
3191
3072
  }
3192
- .ui-textarea--ghost {
3193
- --ui-_bg: transparent;
3194
- --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));
3195
3080
  }
3196
- .ui-textarea--error {
3197
- --ui-_border-color: var(--ui-textarea-error-border, var(--ui-color-danger, hsl(0, 70%, 50%)));
3198
- --ui-_border-color-focus: var(--ui-textarea-error-border, var(--ui-color-danger, hsl(0, 70%, 50%)));
3081
+ .ui-drawer-overlay[data-state=open] {
3082
+ animation: drawer-overlay-in var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
3199
3083
  }
3200
- .ui-textarea--success {
3201
- --ui-_border-color: var(--ui-textarea-success-border, var(--ui-color-success, hsl(142, 70%, 45%)));
3202
- --ui-_border-color-focus: var(--ui-textarea-success-border, var(--ui-color-success, hsl(142, 70%, 45%)));
3084
+ .ui-drawer-overlay[data-state=closed] {
3085
+ animation: drawer-overlay-out var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
3203
3086
  }
3204
- }
3205
- @layer components.styles {
3206
- .ui-textarea {
3207
- display: block;
3208
- box-sizing: border-box;
3209
- inline-size: 100%;
3210
- min-block-size: var(--ui-_min-height);
3211
- padding-block: var(--ui-_padding-y);
3212
- padding-inline: var(--ui-_padding-x);
3213
- font-family: inherit;
3214
- font-size: var(--ui-_font-size);
3215
- line-height: var(--ui-row-1, 1rem);
3216
- color: var(--ui-_text);
3217
- background: var(--ui-_bg);
3218
- border: none;
3219
- border-radius: var(--ui-_radius);
3220
- outline: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
3221
- 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);
3222
- outline-offset: calc(var(--ui-border-width-sm, 0.0625rem) * -1);
3223
- resize: vertical;
3087
+ @keyframes drawer-overlay-in {
3088
+ from {
3089
+ opacity: 0;
3090
+ }
3224
3091
  }
3225
- .ui-textarea::placeholder {
3226
- color: var(--ui-_placeholder);
3092
+ @keyframes drawer-overlay-out {
3093
+ to {
3094
+ opacity: 0;
3095
+ }
3227
3096
  }
3228
- .ui-textarea:hover:not(:disabled, :focus) {
3229
- 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);
3230
3104
  }
3231
- .ui-textarea:focus, .ui-textarea--focus {
3232
- outline-color: var(--ui-_border-color-focus);
3233
- box-shadow: 0 0 0 var(--ui-border-width-md, 0.125rem) var(--ui-color-focus, hsl(220, 85%, 65%));
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);
3234
3111
  }
3235
- .ui-textarea:disabled, .ui-textarea--disabled {
3236
- opacity: 0.5;
3237
- cursor: not-allowed;
3238
- 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);
3239
3118
  }
3240
- .ui-textarea:read-only {
3241
- background: var(--ui-color-bg-subtle, hsl(220, 10%, 96%));
3242
- 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);
3243
3125
  }
3244
- .ui-textarea--resize-none {
3245
- 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);
3246
3132
  }
3247
- .ui-textarea--resize-horizontal {
3248
- 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);
3249
3135
  }
3250
- .ui-textarea--resize-both {
3251
- 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);
3252
3138
  }
3253
- }
3254
- @layer components.tokens {
3255
- .ui-toast-viewport {
3256
- --ui-_gap: var(--ui-toast-viewport-gap, calc(0.5rem * 1));
3257
- --ui-_padding: var(--ui-toast-viewport-padding, calc(0.5rem * 2));
3258
- --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);
3141
+ }
3142
+ .ui-drawer--start[data-state=closed] {
3143
+ animation: drawer-slide-out-start var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
3259
3144
  }
3260
- .ui-toast {
3261
- --ui-_padding: var(--ui-toast-padding, calc(0.5rem * 2));
3262
- --ui-_gap: var(--ui-toast-gap, calc(0.5rem * 1));
3263
- --ui-_radius: var(--ui-toast-radius, var(--ui-radius-md, 0.5rem));
3264
- --ui-_bg: var(--ui-toast-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
3265
- --ui-_border-color: var(--ui-toast-border-color, var(--ui-color-border, hsl(220, 10%, 90%)));
3266
- --ui-_shadow: var(--ui-toast-shadow, var(--ui-shadow-lg));
3145
+ .ui-drawer--top[data-state=open] {
3146
+ animation: drawer-slide-in-top var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
3267
3147
  }
3268
- .ui-toast--success {
3269
- --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);
3270
3150
  }
3271
- .ui-toast--warning {
3272
- --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);
3273
3153
  }
3274
- .ui-toast--danger {
3275
- --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);
3276
3156
  }
3277
- .ui-toast--info {
3278
- --ui-_border-color: var(--ui-color-primary);
3157
+ @keyframes drawer-slide-in-end {
3158
+ from {
3159
+ transform: translateX(100%);
3160
+ }
3279
3161
  }
3280
- }
3281
- @layer components.styles {
3282
- .ui-toast-viewport {
3283
- display: flex;
3284
- flex-direction: column;
3285
- gap: var(--ui-_gap);
3286
- position: fixed;
3287
- z-index: var(--ui-z-toast, 1000);
3288
- max-inline-size: var(--ui-_max-width);
3289
- padding: var(--ui-_padding);
3290
- pointer-events: none;
3291
- list-style: none;
3162
+ @keyframes drawer-slide-out-end {
3163
+ to {
3164
+ transform: translateX(100%);
3165
+ }
3292
3166
  }
3293
- .ui-toast-viewport--top-end {
3294
- inset-block-start: 0;
3295
- inset-inline-end: 0;
3167
+ @keyframes drawer-slide-in-start {
3168
+ from {
3169
+ transform: translateX(-100%);
3170
+ }
3296
3171
  }
3297
- .ui-toast-viewport--top-start {
3298
- inset-block-start: 0;
3299
- inset-inline-start: 0;
3172
+ @keyframes drawer-slide-out-start {
3173
+ to {
3174
+ transform: translateX(-100%);
3175
+ }
3300
3176
  }
3301
- .ui-toast-viewport--bottom-end {
3302
- inset-block-end: 0;
3303
- inset-inline-end: 0;
3177
+ @keyframes drawer-slide-in-top {
3178
+ from {
3179
+ transform: translateY(-100%);
3180
+ }
3304
3181
  }
3305
- .ui-toast-viewport--bottom-start {
3306
- inset-block-end: 0;
3307
- inset-inline-start: 0;
3182
+ @keyframes drawer-slide-out-top {
3183
+ to {
3184
+ transform: translateY(-100%);
3185
+ }
3308
3186
  }
3309
- .ui-toast-viewport--top-center {
3310
- inset-block-start: 0;
3311
- inset-inline-start: 50%;
3312
- transform: translateX(-50%);
3187
+ @keyframes drawer-slide-in-bottom {
3188
+ from {
3189
+ transform: translateY(100%);
3190
+ }
3313
3191
  }
3314
- .ui-toast-viewport--bottom-center {
3315
- inset-block-end: 0;
3316
- inset-inline-start: 50%;
3317
- transform: translateX(-50%);
3192
+ @keyframes drawer-slide-out-bottom {
3193
+ to {
3194
+ transform: translateY(100%);
3195
+ }
3318
3196
  }
3319
- .ui-toast {
3197
+ .ui-drawer__header {
3320
3198
  display: flex;
3321
- align-items: flex-start;
3322
- gap: var(--ui-_gap);
3323
- padding: var(--ui-_padding);
3324
- background: var(--ui-_bg);
3325
- border-radius: var(--ui-_radius);
3326
- outline: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
3327
- box-shadow: var(--ui-_shadow);
3328
- pointer-events: auto;
3329
- outline-offset: calc(var(--ui-border-width-sm, 0.0625rem) * -1);
3330
- }
3331
- .ui-toast__icon {
3332
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);
3333
3205
  }
3334
- .ui-toast__content {
3335
- flex: 1;
3336
- min-inline-size: 0;
3337
- }
3338
- .ui-toast__title {
3206
+ .ui-drawer__title {
3339
3207
  margin: 0;
3340
- 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);
3341
3210
  line-height: var(--ui-row-1, 1rem);
3342
3211
  }
3343
- .ui-toast__description {
3212
+ .ui-drawer__description {
3344
3213
  margin: 0;
3345
3214
  font-size: var(--ui-font-size-sm, 0.875rem);
3346
3215
  line-height: var(--ui-row-1, 1rem);
3347
3216
  color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
3348
3217
  }
3349
- .ui-toast__action {
3218
+ .ui-drawer__close {
3350
3219
  flex-shrink: 0;
3220
+ margin-inline-start: auto;
3351
3221
  }
3352
- .ui-toast__close {
3353
- 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;
3354
3230
  flex-shrink: 0;
3355
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;
3356
3264
  justify-content: center;
3357
- block-size: var(--ui-row-1, 1rem);
3358
- inline-size: var(--ui-row-1, 1rem);
3359
- padding: 0;
3360
- color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
3361
- background: none;
3362
- border: none;
3363
- cursor: pointer;
3265
+ position: fixed;
3266
+ inset: 0;
3267
+ z-index: var(--ui-_z);
3268
+ padding: calc(0.5rem * 2);
3364
3269
  }
3365
- .ui-toast__close:hover {
3366
- 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);
3367
3282
  }
3368
- .ui-toast[data-state=open] {
3369
- 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;
3370
3286
  }
3371
- .ui-toast[data-state=closed] {
3372
- 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);
3373
3291
  }
3374
- @keyframes toast-slide-in {
3375
- from {
3376
- opacity: 0;
3377
- transform: translateX(100%);
3378
- }
3292
+ .ui-modal--exiting .ui-modal__content,
3293
+ .ui-modal--hidden .ui-modal__content {
3294
+ opacity: 0;
3295
+ transform: scale(0.95);
3379
3296
  }
3380
- @keyframes toast-slide-out {
3381
- to {
3382
- opacity: 0;
3383
- transform: translateX(100%);
3384
- }
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;
3385
3303
  }
3386
3304
  }
3387
3305
  @layer components.tokens {
3388
- .ui-toggle {
3389
- --ui-_track-width: var(--ui-toggle-track-width, calc(0.5rem * 5));
3390
- --ui-_track-height: var(--ui-toggle-track-height, calc(0.5rem * 3));
3391
- --ui-_track-bg: var(--ui-toggle-track-bg, var(--ui-color-bg-subtle, rgb(0 0 0 / 0.1)));
3392
- --ui-_track-bg-checked: var(--ui-toggle-track-bg-checked, var(--ui-color-primary));
3393
- --ui-_track-radius: var(--ui-toggle-track-radius, calc(0.5rem * 1.5));
3394
- --ui-_thumb-size: var(--ui-toggle-thumb-size, calc(0.5rem * 2.5));
3395
- --ui-_thumb-bg: var(--ui-toggle-thumb-bg, white);
3396
- --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));
3397
3309
  }
3398
- .ui-toggle--sm {
3399
- --ui-_track-width: calc(0.5rem * 4);
3400
- --ui-_track-height: calc(0.5rem * 2);
3401
- --ui-_track-radius: 0.5rem;
3402
- --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));
3312
+ }
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;
3403
3335
  }
3404
- .ui-toggle--lg {
3405
- --ui-_track-width: calc(0.5rem * 6);
3406
- --ui-_track-height: calc(0.5rem * 4);
3407
- --ui-_track-radius: calc(0.5rem * 2);
3408
- --ui-_thumb-size: calc(0.5rem * 3.5);
3336
+ .ui-overlay--animate {
3337
+ transition: opacity var(--ui-duration-normal, 200ms) var(--ui-ease-default, ease);
3409
3338
  }
3410
3339
  }
3411
- @layer components.styles {
3412
- .ui-toggle {
3413
- display: inline-flex;
3414
- flex-shrink: 0;
3415
- align-items: center;
3416
- position: relative;
3417
- block-size: var(--ui-_track-height);
3418
- inline-size: var(--ui-_track-width);
3419
- background: var(--ui-_track-bg);
3420
- border-radius: var(--ui-_track-radius);
3421
- cursor: pointer;
3422
- 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));
3423
3350
  }
3424
- .ui-toggle__input {
3351
+ }
3352
+ @layer components.styles {
3353
+ .ui-popover {
3425
3354
  position: absolute;
3426
- inset: 0;
3427
- block-size: 100%;
3428
- 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 {
3429
3371
  margin: 0;
3430
- opacity: 0;
3431
- cursor: pointer;
3372
+ font-size: var(--ui-font-size-md, 1rem);
3373
+ font-weight: var(--ui-weight-semibold, 600);
3432
3374
  }
3433
- .ui-toggle__track {
3375
+ .ui-popover--top::after {
3376
+ content: "";
3434
3377
  position: absolute;
3435
- inset: 0;
3436
- background: var(--ui-_track-bg);
3437
- border-radius: var(--ui-_track-radius);
3438
- 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%);
3439
3383
  }
3440
- .ui-toggle__thumb {
3384
+ .ui-popover--top::before {
3385
+ content: "";
3441
3386
  position: absolute;
3442
- inset-block-start: var(--ui-_thumb-offset);
3443
- inset-inline-start: var(--ui-_thumb-offset);
3444
- block-size: var(--ui-_thumb-size);
3445
- inline-size: var(--ui-_thumb-size);
3446
- background: var(--ui-_thumb-bg);
3447
- border-radius: 50%;
3448
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
3449
- 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%);
3450
3392
  }
3451
- .ui-toggle__input:checked ~ .toggle__track {
3452
- 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%);
3453
3401
  }
3454
- .ui-toggle__input:checked ~ .toggle__thumb {
3455
- 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%);
3456
3410
  }
3457
- .ui-toggle__input:focus-visible ~ .toggle__track {
3458
- outline: 2px solid var(--ui-color-focus, var(--ui-color-primary));
3459
- outline-offset: calc(0.5rem / 4);
3411
+ .ui-popover--visible {
3412
+ opacity: 1;
3460
3413
  }
3461
- .ui-toggle__input:disabled ~ .toggle__track,
3462
- .ui-toggle__input:disabled ~ .toggle__thumb {
3463
- opacity: 0.5;
3464
- cursor: not-allowed;
3414
+ .ui-popover--hidden {
3415
+ opacity: 0;
3416
+ pointer-events: none;
3465
3417
  }
3466
- .ui-toggle:has(.toggle__input:disabled) {
3467
- cursor: not-allowed;
3418
+ .ui-popover--animate {
3419
+ transition: opacity var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
3468
3420
  }
3469
3421
  }
3470
3422
  @layer components.tokens {
@@ -3540,6 +3492,148 @@
3540
3492
  transition: opacity var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
3541
3493
  }
3542
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
+ }
3543
3637
  /* 05. Utilities (high specificity, load last) */
3544
3638
  /* Spacing utilities - all values align to 8px grid */
3545
3639
  /* Uses logical properties for international/RTL support */
@@ -4391,14 +4485,13 @@
4391
4485
  }
4392
4486
  }
4393
4487
  /* 99. Debug tools (dev only) */
4394
- /* Debug grid overlay - add class="debug-grid" to body or any container */
4395
4488
  .ui-debug-grid,
4396
4489
  .ui-debug-grid-rows,
4397
4490
  .ui-debug-baseline {
4398
4491
  position: relative;
4399
4492
  }
4400
4493
  .ui-debug-grid {
4401
- --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);
4402
4495
  }
4403
4496
  .ui-debug-grid::after {
4404
4497
  content: "";
@@ -4414,10 +4507,9 @@
4414
4507
  background-size: var(--ui-unit) var(--ui-unit);
4415
4508
  background-position: 0 0;
4416
4509
  }
4417
- /* Stronger grid at row intervals (16px) */
4418
4510
  .ui-debug-grid-rows {
4419
- --ui-debug-color: hsl(var(--ui-hue-primary) 80% 50% / 0.1);
4420
- --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);
4421
4513
  }
4422
4514
  .ui-debug-grid-rows::after {
4423
4515
  content: "";
@@ -4433,9 +4525,8 @@
4433
4525
  background-size: var(--ui-unit) var(--ui-unit), var(--ui-unit) var(--ui-unit), var(--ui-unit) var(--ui-row);
4434
4526
  background-position: 0 0;
4435
4527
  }
4436
- /* Baseline grid only (horizontal lines) */
4437
4528
  .ui-debug-baseline {
4438
- --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);
4439
4530
  }
4440
4531
  .ui-debug-baseline::after {
4441
4532
  content: "";
@@ -4450,7 +4541,6 @@
4450
4541
  pointer-events: none;
4451
4542
  background-size: 100% var(--ui-unit);
4452
4543
  }
4453
- /* Element boundaries outline */
4454
4544
  .ui-debug-outline * {
4455
4545
  outline: 1px solid hsla(0, 100%, 50%, 0.5);
4456
4546
  }