@oscarpalmer/oui 0.38.0 → 0.40.0

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 (264) hide show
  1. package/README.md +1 -1
  2. package/dist/css/badge.css +11 -8
  3. package/dist/css/button.css +106 -14
  4. package/dist/css/color-picker.css +555 -73
  5. package/dist/css/color.css +86 -86
  6. package/dist/css/combobox.css +98 -4
  7. package/dist/css/content.css +7 -6
  8. package/dist/css/floatable.css +1 -3
  9. package/dist/css/form.css +99 -6
  10. package/dist/css/icon.css +99 -0
  11. package/dist/css/listbox.css +3 -0
  12. package/dist/css/message.css +4 -3
  13. package/dist/css/mixins/button.mixins.css +1 -0
  14. package/dist/css/reset.css +1 -1
  15. package/dist/css/tabs.css +95 -3
  16. package/dist/css/typography.css +90 -0
  17. package/dist/js/color-picker/color-picker.constants.d.mts +2 -0
  18. package/dist/js/color-picker/color-picker.constants.mjs +60 -0
  19. package/dist/js/color-picker/color-picker.dom.d.mts +8 -0
  20. package/dist/js/color-picker/color-picker.dom.mjs +191 -0
  21. package/dist/js/color-picker/color-picker.event.d.mts +9 -0
  22. package/dist/js/color-picker/color-picker.event.mjs +2 -0
  23. package/dist/js/color-picker/color-picker.form.d.mts +5 -0
  24. package/dist/js/color-picker/color-picker.form.mjs +27 -0
  25. package/dist/js/color-picker/color-picker.misc.d.mts +2 -0
  26. package/dist/js/color-picker/color-picker.misc.mjs +2 -0
  27. package/dist/js/color-picker/color-picker.model.d.mts +2 -0
  28. package/dist/js/color-picker/color-picker.model.mjs +24 -0
  29. package/dist/js/color-picker/color-picker.output.d.mts +8 -0
  30. package/dist/js/color-picker/color-picker.output.mjs +235 -0
  31. package/dist/js/color-picker/color-picker.state.d.mts +8 -0
  32. package/dist/js/color-picker/color-picker.state.mjs +2 -0
  33. package/dist/js/{color-picker.d.mts → color-picker/index.d.mts} +10 -43
  34. package/dist/js/color-picker/index.mjs +305 -0
  35. package/dist/js/color-picker.constants-D1mxw_Le.d.mts +179 -0
  36. package/dist/js/color-picker.event-Cksj5TvS.mjs +500 -0
  37. package/dist/js/color-picker.misc-CtsXGrOe.d.mts +27 -0
  38. package/dist/js/combobox/combobox.constants.d.mts +2 -0
  39. package/dist/js/combobox/{constants.combobox.mjs → combobox.constants.mjs} +21 -21
  40. package/dist/js/combobox/combobox.dom.d.mts +26 -0
  41. package/dist/js/combobox/{dom.combobox.mjs → combobox.dom.mjs} +44 -37
  42. package/dist/js/combobox/combobox.event.d.mts +22 -0
  43. package/dist/js/combobox/{event.combobox.mjs → combobox.event.mjs} +1 -1
  44. package/dist/js/combobox/combobox.misc.d.mts +2 -0
  45. package/dist/js/combobox/{misc.combobox.mjs → combobox.misc.mjs} +1 -1
  46. package/dist/js/combobox/combobox.model.d.mts +2 -0
  47. package/dist/js/combobox/combobox.state.d.mts +10 -0
  48. package/dist/js/combobox/combobox.state.mjs +2 -0
  49. package/dist/js/combobox/index.d.mts +163 -2
  50. package/dist/js/combobox/index.mjs +53 -52
  51. package/dist/js/combobox.constants-DZVkMP5g.d.mts +19 -0
  52. package/dist/js/combobox.misc-C1tPZZDi.d.mts +22 -0
  53. package/dist/js/{combobox/models.combobox.d.mts → combobox.model-oDV06XCN.d.mts} +6 -6
  54. package/dist/js/{state.combobox-Qm3FWzYW.mjs → combobox.state-BfJ3Hxg8.mjs} +96 -82
  55. package/dist/js/constants.listbox-C5Ap6Ag_.d.mts +9 -0
  56. package/dist/js/dialog/dialog.model.d.mts +2 -0
  57. package/dist/js/dialog/dialog.model.mjs +11 -0
  58. package/dist/js/dialog/index.d.mts +12 -0
  59. package/dist/js/dialog/index.mjs +123 -0
  60. package/dist/js/dialog.model-DX2mndMh.d.mts +45 -0
  61. package/dist/js/floatable/floatable.embedded.d.mts +2 -2
  62. package/dist/js/floatable/floatable.embedded.mjs +64 -92
  63. package/dist/js/floatable/floatable.model.d.mts +2 -0
  64. package/dist/js/floatable/floatable.model.mjs +23 -0
  65. package/dist/js/floatable/floatable.standalone.d.mts +2 -1
  66. package/dist/js/floatable.embedded-MeTyXjFn.d.mts +17 -0
  67. package/dist/js/floatable.model-DXsQgoU7.d.mts +62 -0
  68. package/dist/js/focus-trap/focus-trap.embedded.d.mts +2 -2
  69. package/dist/js/focus-trap/focus-trap.embedded.mjs +112 -134
  70. package/dist/js/focus-trap/focus-trap.model.d.mts +2 -0
  71. package/dist/js/focus-trap/focus-trap.model.mjs +15 -0
  72. package/dist/js/focus-trap/focus-trap.standalone.d.mts +2 -1
  73. package/dist/js/focus-trap.embedded-DIU05m1z.d.mts +13 -0
  74. package/dist/js/{focus-trap.embedded-DR8NpZfr.d.mts → focus-trap.model-BeX6UYlw.d.mts} +16 -18
  75. package/dist/js/index.d.mts +26 -14
  76. package/dist/js/index.mjs +18 -15
  77. package/dist/js/internal/attributable.d.mts +2 -3
  78. package/dist/js/internal/attributable.mjs +3 -2
  79. package/dist/js/internal/draggable/draggable.model.d.mts +2 -0
  80. package/dist/js/internal/draggable/draggable.model.mjs +37 -0
  81. package/dist/js/internal/draggable/index.d.mts +13 -0
  82. package/dist/js/internal/{draggable.mjs → draggable/index.mjs} +83 -114
  83. package/dist/js/internal/listbox/listbox.constants.d.mts +7 -10
  84. package/dist/js/internal/listbox/listbox.constants.mjs +15 -16
  85. package/dist/js/internal/listbox/listbox.data.d.mts +9 -10
  86. package/dist/js/internal/listbox/listbox.data.mjs +1 -1
  87. package/dist/js/internal/listbox/listbox.dom.d.mts +19 -20
  88. package/dist/js/internal/listbox/listbox.dom.mjs +1 -1
  89. package/dist/js/internal/listbox/listbox.event.d.mts +3 -4
  90. package/dist/js/internal/listbox/listbox.event.mjs +23 -20
  91. package/dist/js/internal/listbox/listbox.form.d.mts +4 -5
  92. package/dist/js/internal/listbox/listbox.form.mjs +15 -12
  93. package/dist/js/internal/listbox/listbox.misc.d.mts +10 -11
  94. package/dist/js/internal/listbox/listbox.misc.mjs +1 -1
  95. package/dist/js/internal/listbox/listbox.model.d.mts +2 -2
  96. package/dist/js/internal/listbox/listbox.state.d.mts +5 -6
  97. package/dist/js/internal/listbox/listbox.state.mjs +19 -20
  98. package/dist/js/internal/misc.d.mts +5 -4
  99. package/dist/js/internal/misc.mjs +7 -1
  100. package/dist/js/internal/navigable/index.d.mts +6 -0
  101. package/dist/js/internal/navigable/index.mjs +125 -0
  102. package/dist/js/internal/navigable/navigable.model.d.mts +2 -0
  103. package/dist/js/internal/navigable/navigable.model.mjs +18 -0
  104. package/dist/js/l10n/index.d.mts +9 -0
  105. package/dist/js/{l10n.mjs → l10n/index.mjs} +50 -23
  106. package/dist/js/l10n/l10n.model.d.mts +2 -0
  107. package/dist/js/l10n/l10n.model.mjs +9 -0
  108. package/dist/js/l10n.model-D6a9frgl.d.mts +26 -0
  109. package/dist/js/listbox/constants.listbox.d.mts +2 -2
  110. package/dist/js/listbox/constants.listbox.mjs +10 -14
  111. package/dist/js/listbox/event.listbox.d.mts +6 -7
  112. package/dist/js/listbox/event.listbox.mjs +47 -1
  113. package/dist/js/listbox/index.d.mts +8 -6
  114. package/dist/js/listbox/index.mjs +47 -49
  115. package/dist/js/listbox/misc.listbox.d.mts +1 -1
  116. package/dist/js/listbox/misc.listbox.mjs +1 -1
  117. package/dist/js/listbox/state.listbox.d.mts +8 -10
  118. package/dist/js/listbox/state.listbox.mjs +2 -2
  119. package/dist/js/{listbox.data-C7CRa5Ya.mjs → listbox.data-BQyZGKgr.mjs} +83 -66
  120. package/dist/js/{listbox.model-CRReGOmu.d.mts → listbox.model-CuBOj4qe.d.mts} +15 -11
  121. package/dist/js/menu/index.mjs +167 -0
  122. package/dist/js/menu/menu.model.d.mts +33 -0
  123. package/dist/js/menu/menu.model.mjs +15 -0
  124. package/dist/js/{misc.listbox-Cyz2CRDy.mjs → misc.listbox-CjfBUbHD.mjs} +27 -69
  125. package/dist/js/{misc.listbox-gnoJhrTr.d.mts → misc.listbox-CtoGvXQo.d.mts} +2 -2
  126. package/dist/js/movable/movable.embedded.d.mts +2 -2
  127. package/dist/js/movable/movable.embedded.mjs +60 -72
  128. package/dist/js/movable/movable.model.d.mts +2 -0
  129. package/dist/js/movable/movable.model.mjs +12 -0
  130. package/dist/js/movable/movable.standalone.d.mts +2 -1
  131. package/dist/js/movable.embedded-DoyXLegc.d.mts +11 -0
  132. package/dist/js/movable.model-BHaK_mKw.d.mts +186 -0
  133. package/dist/js/navigable.model-BPOM8DZk.d.mts +44 -0
  134. package/dist/js/popover/index.d.mts +12 -0
  135. package/dist/js/{popover.mjs → popover/index.mjs} +40 -50
  136. package/dist/js/popover/popover.model.d.mts +2 -0
  137. package/dist/js/popover/popover.model.mjs +12 -0
  138. package/dist/js/popover.model-ubKNG612.d.mts +38 -0
  139. package/dist/js/resizable/resizable.embedded.d.mts +2 -2
  140. package/dist/js/resizable/resizable.embedded.mjs +44 -59
  141. package/dist/js/resizable/resizable.model.d.mts +2 -0
  142. package/dist/js/resizable/resizable.model.mjs +21 -0
  143. package/dist/js/resizable/resizable.standalone.d.mts +2 -1
  144. package/dist/js/resizable.embedded-Bf1qBUdt.d.mts +11 -0
  145. package/dist/js/resizable.model-BwzJcTVJ.d.mts +46 -0
  146. package/dist/js/sortable/sortable.embedded.d.mts +2 -2
  147. package/dist/js/sortable/sortable.embedded.mjs +69 -82
  148. package/dist/js/sortable/sortable.model.d.mts +2 -0
  149. package/dist/js/sortable/sortable.model.mjs +24 -0
  150. package/dist/js/sortable/sortable.standalone.d.mts +2 -1
  151. package/dist/js/sortable.embedded-DzBKAwSG.d.mts +11 -0
  152. package/dist/js/{splitter.d.mts → splitter/index.d.mts} +8 -7
  153. package/dist/js/splitter/index.mjs +284 -0
  154. package/dist/js/splitter/splitter.model.d.mts +2 -0
  155. package/dist/js/splitter/splitter.model.mjs +37 -0
  156. package/dist/js/splitter.model-DOLNjLVS.d.mts +57 -0
  157. package/dist/js/{tabs.d.mts → tabs/index.d.mts} +7 -8
  158. package/dist/js/{tabs.mjs → tabs/index.mjs} +58 -58
  159. package/dist/js/tabs/tabs.model.d.mts +2 -0
  160. package/dist/js/tabs/tabs.model.mjs +18 -0
  161. package/dist/js/tabs.model-DRBX_JtI.d.mts +40 -0
  162. package/dist/js/toolbar/index.mjs +27 -0
  163. package/dist/js/toolbar/toolbar.model.d.mts +11 -0
  164. package/dist/js/toolbar/toolbar.model.mjs +7 -0
  165. package/dist/js/tooltip/index.d.mts +19 -0
  166. package/dist/js/{tooltip.mjs → tooltip/index.mjs} +60 -85
  167. package/dist/js/tooltip/tooltip.model.d.mts +2 -0
  168. package/dist/js/tooltip/tooltip.model.mjs +15 -0
  169. package/dist/js/tooltip.model-DRkY_BsL.d.mts +37 -0
  170. package/package.json +43 -37
  171. package/dist/js/color-picker.mjs +0 -924
  172. package/dist/js/combobox/constants.combobox.d.mts +0 -2
  173. package/dist/js/combobox/dom.combobox.d.mts +0 -27
  174. package/dist/js/combobox/event.combobox.d.mts +0 -23
  175. package/dist/js/combobox/misc.combobox.d.mts +0 -2
  176. package/dist/js/combobox/state.combobox.d.mts +0 -12
  177. package/dist/js/combobox/state.combobox.mjs +0 -2
  178. package/dist/js/constants.combobox-DmRAMC64.d.mts +0 -26
  179. package/dist/js/constants.listbox-DRsXUxd3.d.mts +0 -14
  180. package/dist/js/dialog.d.mts +0 -47
  181. package/dist/js/dialog.mjs +0 -131
  182. package/dist/js/draggable-a6w0J1OD.d.mts +0 -154
  183. package/dist/js/floatable.embedded-Bct4U5Dm.d.mts +0 -69
  184. package/dist/js/index-DJdFlTLm.d.mts +0 -177
  185. package/dist/js/internal/draggable.d.mts +0 -2
  186. package/dist/js/internal/navigable.d.mts +0 -37
  187. package/dist/js/internal/navigable.mjs +0 -135
  188. package/dist/js/l10n-Bn-7RcwR.d.mts +0 -20
  189. package/dist/js/l10n.d.mts +0 -2
  190. package/dist/js/menu.mjs +0 -172
  191. package/dist/js/popover.d.mts +0 -38
  192. package/dist/js/resizable.embedded-3qoR0Bjm.d.mts +0 -34
  193. package/dist/js/splitter.mjs +0 -322
  194. package/dist/js/toolbar.mjs +0 -31
  195. package/dist/js/tooltip.d.mts +0 -45
  196. package/src/css/a11y.scss +0 -13
  197. package/src/css/badge.scss +0 -62
  198. package/src/css/button.scss +0 -50
  199. package/src/css/color-picker.scss +0 -344
  200. package/src/css/color.scss +0 -113
  201. package/src/css/combobox.scss +0 -255
  202. package/src/css/content.scss +0 -181
  203. package/src/css/flex.scss +0 -107
  204. package/src/css/floatable.scss +0 -155
  205. package/src/css/form.scss +0 -575
  206. package/src/css/listbox.scss +0 -121
  207. package/src/css/message.scss +0 -74
  208. package/src/css/mixins/badge.mixins.scss +0 -53
  209. package/src/css/mixins/button.mixins.scss +0 -112
  210. package/src/css/mixins/input.mixins.scss +0 -114
  211. package/src/css/mixins/message.mixins.scss +0 -41
  212. package/src/css/mixins/misc.mixins.scss +0 -48
  213. package/src/css/mixins/shadow.mixins.scss +0 -57
  214. package/src/css/reset.scss +0 -392
  215. package/src/css/splitter.scss +0 -89
  216. package/src/css/table.scss +0 -107
  217. package/src/css/tabs.scss +0 -74
  218. package/src/js/color-picker.ts +0 -1653
  219. package/src/js/combobox/constants.combobox.ts +0 -83
  220. package/src/js/combobox/dom.combobox.ts +0 -411
  221. package/src/js/combobox/event.combobox.ts +0 -365
  222. package/src/js/combobox/index.ts +0 -382
  223. package/src/js/combobox/misc.combobox.ts +0 -104
  224. package/src/js/combobox/models.combobox.ts +0 -54
  225. package/src/js/combobox/state.combobox.ts +0 -246
  226. package/src/js/dialog.ts +0 -255
  227. package/src/js/floatable/floatable.embedded.ts +0 -336
  228. package/src/js/floatable/floatable.standalone.ts +0 -6
  229. package/src/js/focus-trap/focus-trap.embedded.ts +0 -411
  230. package/src/js/focus-trap/focus-trap.standalone.ts +0 -1
  231. package/src/js/index.ts +0 -16
  232. package/src/js/internal/attributable.ts +0 -73
  233. package/src/js/internal/draggable.ts +0 -657
  234. package/src/js/internal/listbox/listbox.constants.ts +0 -25
  235. package/src/js/internal/listbox/listbox.data.ts +0 -287
  236. package/src/js/internal/listbox/listbox.dom.ts +0 -446
  237. package/src/js/internal/listbox/listbox.event.ts +0 -129
  238. package/src/js/internal/listbox/listbox.form.ts +0 -125
  239. package/src/js/internal/listbox/listbox.misc.ts +0 -135
  240. package/src/js/internal/listbox/listbox.model.ts +0 -169
  241. package/src/js/internal/listbox/listbox.state.ts +0 -82
  242. package/src/js/internal/misc.ts +0 -27
  243. package/src/js/internal/navigable.ts +0 -317
  244. package/src/js/l10n.ts +0 -192
  245. package/src/js/listbox/constants.listbox.ts +0 -61
  246. package/src/js/listbox/event.listbox.ts +0 -106
  247. package/src/js/listbox/index.ts +0 -364
  248. package/src/js/listbox/misc.listbox.ts +0 -70
  249. package/src/js/listbox/state.listbox.ts +0 -194
  250. package/src/js/menu.ts +0 -348
  251. package/src/js/movable/movable.embedded.ts +0 -318
  252. package/src/js/movable/movable.standalone.ts +0 -2
  253. package/src/js/popover.ts +0 -229
  254. package/src/js/resizable/resizable.embedded.ts +0 -413
  255. package/src/js/resizable/resizable.standalone.ts +0 -5
  256. package/src/js/sortable/sortable.embedded.ts +0 -527
  257. package/src/js/sortable/sortable.standalone.ts +0 -2
  258. package/src/js/splitter.ts +0 -583
  259. package/src/js/tabs.ts +0 -441
  260. package/src/js/toolbar.ts +0 -63
  261. package/src/js/tooltip.ts +0 -367
  262. /package/dist/js/combobox/{models.combobox.mjs → combobox.model.mjs} +0 -0
  263. /package/dist/js/{menu.d.mts → menu/index.d.mts} +0 -0
  264. /package/dist/js/{toolbar.d.mts → toolbar/index.d.mts} +0 -0
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![npm](https://badge.fury.io/js/@oscarpalmer%2Foui.svg)](https://www.npmjs.com/package/@oscarpalmer/oui)
4
4
 
5
- _Oui_ _(Oscar UI)_ is a collection of styles, components, and related thingamjigs for designing websites and applications, which I often use to build prototypes and proof-of-concepts for myself and at work.
5
+ _Oui_ _(Oscar UI)_ is a collection of styles, components, and related whatchamacallits for designing websites and applications, which I often use to build prototypes and proof-of-concepts for myself and at work.
6
6
 
7
7
  ## License
8
8
 
@@ -3,13 +3,13 @@
3
3
 
4
4
  :where(.oui-pill, .oui-tag) {
5
5
  --oui-shadow-inset: color-mix(in oklab, var(--oui-absolute), transparent 50%);
6
- --oui-shadow-value: var(--oui-gray-6);
6
+ --oui-shadow-value: var(--oui-gray-5);
7
7
  --oui-shadow-mixed: color-mix(in oklab, var(--oui-shadow-value), transparent 87.5%);
8
8
  box-shadow: inset 0 1px 0 0 var(--oui-shadow-inset), 0 0 0 1px var(--oui-shadow-mixed), 0 1px 2px -0.5px var(--oui-shadow-mixed), 0 2px 4px -1px var(--oui-shadow-mixed);
9
9
  display: inline-flex;
10
10
  flex-flow: row nowrap;
11
11
  gap: 0.5em;
12
- background-color: color-mix(in oklab, var(--oui-background, var(--oui-gray-1)), transparent 25%);
12
+ background-color: color-mix(in oklab, var(--oui-background, var(--oui-gray-1)), transparent 62.5%);
13
13
  color: var(--oui-foreground, var(--oui-gray-8));
14
14
  text-shadow: 0 1px 0 var(--oui-absolute);
15
15
  line-height: 1.25;
@@ -25,6 +25,9 @@
25
25
  :where(.oui-pill--small, .oui-tag--small) {
26
26
  font-size: 0.875em;
27
27
  }
28
+ :where(.oui-pill--small) {
29
+ padding: 0.3333em 0.875em;
30
+ }
28
31
  :where(.oui-pill--tiny, .oui-tag--tiny) {
29
32
  color: color-mix(in oklab, var(--oui-foreground, var(--oui-gray-8)), transparent 12.5%);
30
33
  font-size: 0.75em;
@@ -41,32 +44,32 @@
41
44
  :where(.oui-pill--blue, .oui-tag--blue) {
42
45
  --oui-background: var(--oui-blue-1);
43
46
  --oui-foreground: var(--oui-blue-8);
44
- --oui-shadow-value: var(--oui-blue-6);
47
+ --oui-shadow-value: var(--oui-blue-5);
45
48
  }
46
49
  :where(.oui-pill--green, .oui-tag--green) {
47
50
  --oui-background: var(--oui-green-1);
48
51
  --oui-foreground: var(--oui-green-8);
49
- --oui-shadow-value: var(--oui-green-6);
52
+ --oui-shadow-value: var(--oui-green-5);
50
53
  }
51
54
  :where(.oui-pill--orange, .oui-tag--orange) {
52
55
  --oui-background: var(--oui-orange-1);
53
56
  --oui-foreground: var(--oui-orange-8);
54
- --oui-shadow-value: var(--oui-orange-6);
57
+ --oui-shadow-value: var(--oui-orange-5);
55
58
  }
56
59
  :where(.oui-pill--purple, .oui-tag--purple) {
57
60
  --oui-background: var(--oui-purple-1);
58
61
  --oui-foreground: var(--oui-purple-8);
59
- --oui-shadow-value: var(--oui-purple-6);
62
+ --oui-shadow-value: var(--oui-purple-5);
60
63
  }
61
64
  :where(.oui-pill--red, .oui-tag--red) {
62
65
  --oui-background: var(--oui-red-1);
63
66
  --oui-foreground: var(--oui-red-8);
64
- --oui-shadow-value: var(--oui-red-6);
67
+ --oui-shadow-value: var(--oui-red-5);
65
68
  }
66
69
  :where(.oui-pill--yellow, .oui-tag--yellow) {
67
70
  --oui-background: var(--oui-yellow-1);
68
71
  --oui-foreground: var(--oui-yellow-8);
69
- --oui-shadow-value: var(--oui-yellow-6);
72
+ --oui-shadow-value: var(--oui-yellow-5);
70
73
  }
71
74
 
72
75
 
@@ -1,13 +1,14 @@
1
1
  /*! https://github.com/oscarpalmer/oui */
2
2
 
3
3
 
4
+
4
5
  :where(.oui-button) {
5
- --oui-background-percentage: 25%;
6
+ --oui-background-percentage: 50%;
6
7
  --oui-background-value: var(--oui-gray-2);
7
8
  --oui-foreground-percentage: 0%;
8
9
  --oui-foreground-value: var(--oui-gray-8);
9
10
  --oui-outline-percentage: 100%;
10
- --oui-outline-value: var(--oui-gray-6);
11
+ --oui-outline-value: var(--oui-gray-5);
11
12
  --oui-shadow-inset: color-mix(in oklab, var(--oui-absolute), transparent 75%);
12
13
  --oui-shadow-percentage: 82.5%;
13
14
  --oui-shadow-value: color-mix(
@@ -27,9 +28,42 @@
27
28
  border: none;
28
29
  color: color-mix(in oklab, var(--oui-foreground-value), transparent var(--oui-foreground-percentage));
29
30
  line-height: 1.25;
31
+ position: relative;
30
32
  transition: 0.125s ease-in-out;
31
33
  transition-property: background, outline, box-shadow, color;
32
34
  }
35
+ :where(.oui-button)::after {
36
+ content: "";
37
+ width: 1em;
38
+ height: 1em;
39
+ display: inline-flex;
40
+ opacity: 0;
41
+ background-color: color-mix(in oklab, var(--oui-foreground-value), transparent var(--oui-foreground-percentage));
42
+ -webkit-mask-image: url("");
43
+ mask-image: url("");
44
+ -webkit-mask-position: center;
45
+ mask-position: center;
46
+ -webkit-mask-repeat: no-repeat;
47
+ mask-repeat: no-repeat;
48
+ -webkit-mask-size: 1em 1em;
49
+ mask-size: 1em 1em;
50
+ pointer-events: none;
51
+ transition: 0.125s ease-in-out;
52
+ transition-property: background-color, color, opacity, -webkit-mask-image;
53
+ transition-property: background-color, color, mask-image, opacity;
54
+ transition-property: background-color, color, mask-image, opacity, -webkit-mask-image;
55
+ position: absolute;
56
+ inset: 50% auto auto 50%;
57
+ transform: translate3d(-50%, -50%, 0);
58
+ }
59
+ :where(.oui-button):has(.oui-icon:is(:first-child))::after {
60
+ inset: auto;
61
+ transform: none;
62
+ }
63
+ :where(.oui-button):has(.oui-icon:is(:last-child))::after {
64
+ inset: auto 0.75em auto auto;
65
+ transform: none;
66
+ }
33
67
  :where(.oui-button):focus-visible {
34
68
  --oui-outline-percentage: 75%;
35
69
  }
@@ -40,6 +74,57 @@
40
74
  --oui-shadow-percentage: 90%;
41
75
  }
42
76
  }
77
+ :where(.oui-button):not([disabled], [aria-disabled=true i])[aria-busy=true i]:not(:has(.oui-icon:is(:first-child, :last-child))), :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=busy i]:not(:has(.oui-icon:is(:first-child, :last-child))), :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=error i]:not(:has(.oui-icon:is(:first-child, :last-child))), :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=loading i]:not(:has(.oui-icon:is(:first-child, :last-child))), :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=success i]:not(:has(.oui-icon:is(:first-child, :last-child))) {
78
+ color: transparent;
79
+ }
80
+ :where(.oui-button):not([disabled], [aria-disabled=true i])[aria-busy=true i]::after, :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=busy i]::after, :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=error i]::after, :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=loading i]::after, :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=success i]::after {
81
+ opacity: 1;
82
+ }
83
+ :where(.oui-button):not([disabled], [aria-disabled=true i])[aria-busy=true i] .oui-icon, :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=busy i] .oui-icon, :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=error i] .oui-icon, :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=loading i] .oui-icon, :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=success i] .oui-icon {
84
+ opacity: 0;
85
+ }
86
+ :where(.oui-button):not([disabled], [aria-disabled=true i])[aria-busy=true i], :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=busy i], :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=loading i] {
87
+ --oui-background-value: var(--oui-blue-2);
88
+ --oui-foreground-value: var(--oui-blue-8);
89
+ --oui-outline-value: var(--oui-blue-5);
90
+ }
91
+ :where(.oui-button):not([disabled], [aria-disabled=true i])[aria-busy=true i]::after, :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=busy i]::after, :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=loading i]::after {
92
+ -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJpY29uIGljb24tdGFibGVyIGljb25zLXRhYmxlci1vdXRsaW5lIGljb24tdGFibGVyLWxvYWRlci0yIj48cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiIC8+PHBhdGggZD0iTTEyIDNhOSA5IDAgMSAwIDkgOSIgLz48L3N2Zz4=");
93
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJpY29uIGljb24tdGFibGVyIGljb25zLXRhYmxlci1vdXRsaW5lIGljb24tdGFibGVyLWxvYWRlci0yIj48cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiIC8+PHBhdGggZD0iTTEyIDNhOSA5IDAgMSAwIDkgOSIgLz48L3N2Zz4=");
94
+ transform-origin: center;
95
+ animation: oui-button-icon-centered 1s linear infinite;
96
+ }
97
+ @keyframes oui-button-icon-centered {
98
+ to {
99
+ transform: translate3d(-50%, -50%, 0) rotate3d(0, 0, 1, 360deg);
100
+ }
101
+ }
102
+ :where(.oui-button):not([disabled], [aria-disabled=true i])[aria-busy=true i]:has(.oui-icon:is(:first-child, :last-child))::after, :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=busy i]:has(.oui-icon:is(:first-child, :last-child))::after, :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=loading i]:has(.oui-icon:is(:first-child, :last-child))::after {
103
+ animation: oui-button-icon-offset 1s linear infinite;
104
+ }
105
+ @keyframes oui-button-icon-offset {
106
+ to {
107
+ transform: rotate3d(0, 0, 1, 360deg);
108
+ }
109
+ }
110
+ :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=error i] {
111
+ --oui-background-value: var(--oui-red-2);
112
+ --oui-foreground-value: var(--oui-red-8);
113
+ --oui-outline-value: var(--oui-red-5);
114
+ }
115
+ :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=error i]::after {
116
+ -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJpY29uIGljb24tdGFibGVyIGljb25zLXRhYmxlci1vdXRsaW5lIGljb24tdGFibGVyLXgiPjxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz48cGF0aCBkPSJNMTggNmwtMTIgMTIiIC8+PHBhdGggZD0iTTYgNmwxMiAxMiIgLz48L3N2Zz4=");
117
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJpY29uIGljb24tdGFibGVyIGljb25zLXRhYmxlci1vdXRsaW5lIGljb24tdGFibGVyLXgiPjxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIgLz48cGF0aCBkPSJNMTggNmwtMTIgMTIiIC8+PHBhdGggZD0iTTYgNmwxMiAxMiIgLz48L3N2Zz4=");
118
+ }
119
+ :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=success i] {
120
+ --oui-background-value: var(--oui-green-2);
121
+ --oui-foreground-value: var(--oui-green-8);
122
+ --oui-outline-value: var(--oui-green-5);
123
+ }
124
+ :where(.oui-button):not([disabled], [aria-disabled=true i])[data-state=success i]::after {
125
+ -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJpY29uIGljb24tdGFibGVyIGljb25zLXRhYmxlci1vdXRsaW5lIGljb24tdGFibGVyLWNoZWNrIj48cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiIC8+PHBhdGggZD0iTTUgMTJsNSA1bDEwIC0xMCIgLz48L3N2Zz4=");
126
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJpY29uIGljb24tdGFibGVyIGljb25zLXRhYmxlci1vdXRsaW5lIGljb24tdGFibGVyLWNoZWNrIj48cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiIC8+PHBhdGggZD0iTTUgMTJsNSA1bDEwIC0xMCIgLz48L3N2Zz4=");
127
+ }
43
128
  :where(.oui-button):not([disabled], [aria-disabled=true i]):active {
44
129
  box-shadow: 0 0 0 1px var(--oui-shadow-value), inset 0 1px 2px 0 var(--oui-shadow-value), inset 0 2px 4px 0 var(--oui-shadow-value);
45
130
  scale: 0.95;
@@ -53,35 +138,42 @@
53
138
  --oui-shadow-percentage: 92.5%;
54
139
  font-style: italic;
55
140
  }
141
+ :where(.oui-button) .oui-icon {
142
+ width: 1em;
143
+ height: 1em;
144
+ }
145
+ :where(.oui-button) .oui-icon:is(:first-child, :last-child) {
146
+ transition: opacity 0.125s ease-in-out;
147
+ }
56
148
  :where(.oui-button--blue) {
57
- --oui-background-value: var(--oui-blue-3);
149
+ --oui-background-value: var(--oui-blue-2);
58
150
  --oui-foreground-value: var(--oui-blue-8);
59
- --oui-outline-value: var(--oui-blue-6);
151
+ --oui-outline-value: var(--oui-blue-5);
60
152
  }
61
153
  :where(.oui-button--green) {
62
- --oui-background-value: var(--oui-green-3);
154
+ --oui-background-value: var(--oui-green-2);
63
155
  --oui-foreground-value: var(--oui-green-8);
64
- --oui-outline-value: var(--oui-green-6);
156
+ --oui-outline-value: var(--oui-green-5);
65
157
  }
66
158
  :where(.oui-button--orange) {
67
- --oui-background-value: var(--oui-orange-3);
159
+ --oui-background-value: var(--oui-orange-2);
68
160
  --oui-foreground-value: var(--oui-orange-8);
69
- --oui-outline-value: var(--oui-orange-6);
161
+ --oui-outline-value: var(--oui-orange-5);
70
162
  }
71
163
  :where(.oui-button--purple) {
72
- --oui-background-value: var(--oui-purple-3);
164
+ --oui-background-value: var(--oui-purple-2);
73
165
  --oui-foreground-value: var(--oui-purple-8);
74
- --oui-outline-value: var(--oui-purple-6);
166
+ --oui-outline-value: var(--oui-purple-5);
75
167
  }
76
168
  :where(.oui-button--red) {
77
- --oui-background-value: var(--oui-red-3);
169
+ --oui-background-value: var(--oui-red-2);
78
170
  --oui-foreground-value: var(--oui-red-8);
79
- --oui-outline-value: var(--oui-red-6);
171
+ --oui-outline-value: var(--oui-red-5);
80
172
  }
81
173
  :where(.oui-button--yellow) {
82
- --oui-background-value: var(--oui-yellow-3);
174
+ --oui-background-value: var(--oui-yellow-2);
83
175
  --oui-foreground-value: var(--oui-yellow-8);
84
- --oui-outline-value: var(--oui-yellow-6);
176
+ --oui-outline-value: var(--oui-yellow-5);
85
177
  }
86
178
  :where(.oui-button--rounded) {
87
179
  padding: 0.5em 1em;