@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/src/css/form.scss DELETED
@@ -1,575 +0,0 @@
1
- /*! https://github.com/oscarpalmer/oui */
2
-
3
- @use './mixins/button.mixins.scss' as buttonMixins;
4
- @use './mixins/input.mixins.scss' as inputMixins;
5
- @use './mixins/misc.mixins.scss' as miscMixins;
6
-
7
- :where(.oui-fieldset) {
8
- padding: 1em;
9
- border: 1px solid var(--oui-gray-3);
10
- border-radius: 0.25em;
11
- }
12
-
13
- .oui-input {
14
- :where(&) {
15
- --oui-background-value: var(--oui-absolute);
16
- }
17
-
18
- :where(&:not([type='range' i])) {
19
- @include inputMixins.input;
20
-
21
- padding: 0.5em 0.75em;
22
- border-radius: 0.25em;
23
- }
24
-
25
- :where(&:not([type='range' i], select[multiple], textarea)) {
26
- overflow: hidden;
27
- white-space: nowrap;
28
- text-overflow: ellipsis;
29
- }
30
-
31
- :where(&:is([list])) {
32
- &::-webkit-calendar-picker-indicator {
33
- display: none !important;
34
- }
35
- }
36
-
37
- :where(&:is([type='color' i])) {
38
- padding: 0;
39
- }
40
-
41
- :where(
42
- &:is(
43
- [type='date' i],
44
- [type='datetime-local' i],
45
- [type='month' i],
46
- [type='number' i],
47
- [type='tel' i],
48
- [type='time' i],
49
- [type='url' i],
50
- [type='week' i]
51
- )
52
- ) {
53
- font-variant-numeric: tabular-nums;
54
- }
55
-
56
- :where(&:is([type='date' i], [type='datetime-local' i], [type='month' i], [type='week' i])) {
57
- &::-webkit-calendar-picker-indicator {
58
- --oui-outline-percentage: 100%;
59
- --oui-outline-value: var(--oui-blue-6);
60
-
61
- outline: 4px solid
62
- color-mix(in oklab, var(--oui-outline-value), transparent var(--oui-outline-percentage));
63
- outline-offset: 2px;
64
- border-radius: 1em;
65
- transition: outline 0.125s ease-in-out;
66
- cursor: pointer;
67
-
68
- &:focus-within {
69
- --oui-outline-percentage: 62.5%;
70
- }
71
-
72
- @media (hover: hover) {
73
- &:hover {
74
- --oui-outline-percentage: 85%;
75
- }
76
- }
77
- }
78
- }
79
-
80
- :where(&:is([type='file' i])) {
81
- padding-left: 0.5em;
82
-
83
- &::file-selector-button {
84
- @include buttonMixins.button;
85
-
86
- --oui-background-value: var(--oui-grey-2);
87
- --oui-outline-value: var(--oui-grey-6);
88
-
89
- margin: 0 0.75em 0 0;
90
- outline: none;
91
- font-size: 0.75em;
92
- cursor: pointer;
93
- }
94
- }
95
-
96
- :where(&:is([type='range' i])) {
97
- appearance: none;
98
- outline: none;
99
-
100
- &::range-track {
101
- @include inputMixins.input;
102
-
103
- appearance: none;
104
- width: 100%;
105
- height: 0.75em;
106
- border-radius: 0.75em;
107
- position: relative;
108
- }
109
-
110
- &::range-thumb {
111
- --oui-background-percentage: 0%;
112
- --oui-background-value: var(--oui-blue-6);
113
-
114
- @include inputMixins.input-outlined;
115
-
116
- appearance: none;
117
- width: 1.25em;
118
- height: 1.25em;
119
- background-color: color-mix(
120
- in oklab,
121
- var(--oui-background-value),
122
- transparent var(--oui-background-percentage)
123
- );
124
- border: 1px solid var(--oui-absolute);
125
- border-radius: 1.25em;
126
- box-shadow: 0 1px 2px 2px rgb(0 0 0 / 12.5%);
127
- cursor: pointer;
128
- }
129
-
130
- &::-webkit-slider-thumb {
131
- position: relative;
132
- top: 50%;
133
- transform: translateY(-50%);
134
- }
135
- }
136
-
137
- :where(
138
- &.oui-validate:not(
139
- [disabled],
140
- [readonly],
141
- [aria-disabled='true' i],
142
- [aria-readonly='true' i],
143
- :focus-visible,
144
- :focus-within
145
- ):is(:user-invalid:not([aria-invalid='false' i]), [aria-invalid='true' i])
146
- ) {
147
- &::file-selector-button {
148
- --oui-background-value: var(--oui-red-2);
149
- --oui-foreground-value: var(--oui-red-8);
150
- --oui-outline-value: var(--oui-red-6);
151
- }
152
-
153
- &::range-thumb {
154
- --oui-background-value: var(--oui-red-6);
155
- }
156
-
157
- &::range-track {
158
- @include inputMixins.input-invalid;
159
- }
160
-
161
- & > option:checked {
162
- background-color: var(--oui-red-2);
163
- color: var(--oui-red-9);
164
- }
165
- }
166
-
167
- :where(
168
- &.oui-validate:not(
169
- [disabled],
170
- [readonly],
171
- [aria-disabled='true' i],
172
- [aria-readonly='true' i],
173
- :focus-visible,
174
- :focus-within
175
- ):is(:user-valid:not([aria-invalid='true' i]), [aria-invalid='false' i])
176
- ) {
177
- &::file-selector-button {
178
- --oui-background-value: var(--oui-green-2);
179
- --oui-foreground-value: var(--oui-green-8);
180
- --oui-outline-value: var(--oui-green-6);
181
- }
182
-
183
- &::range-track {
184
- @include inputMixins.input-valid;
185
- }
186
-
187
- &::range-thumb {
188
- --oui-background-value: var(--oui-green-6);
189
- }
190
-
191
- & > option:checked {
192
- background-color: var(--oui-green-2);
193
- color: var(--oui-green-9);
194
- }
195
- }
196
-
197
- &:not([disabled], [readonly], [aria-disabled='true' i], [aria-readonly='true' i]) {
198
- :where(&:focus-visible, &:focus-within) {
199
- &::file-selector-button {
200
- --oui-background-value: var(--oui-blue-2);
201
- --oui-foreground-value: var(--oui-blue-8);
202
- --oui-outline-value: var(--oui-blue-6);
203
- }
204
-
205
- &::range-thumb,
206
- &::range-track {
207
- @include inputMixins.input-focus;
208
- }
209
-
210
- &::range-thumb {
211
- --oui-background-value: var(--oui-blue-6);
212
-
213
- box-shadow: 0 1px 2px 2px rgb(0 0 0 / 25%);
214
- }
215
- }
216
-
217
- @media (hover: hover) {
218
- :where(&:hover) {
219
- &::file-selector-button {
220
- --oui-background-value: var(--oui-blue-2);
221
- --oui-foreground-value: var(--oui-blue-8);
222
- --oui-outline-value: var(--oui-blue-6);
223
- }
224
-
225
- &::range-thumb {
226
- --oui-background-value: var(--oui-blue-5);
227
- }
228
-
229
- &::range-track {
230
- @include inputMixins.input-hover;
231
- }
232
- }
233
- }
234
- }
235
-
236
- :where(&:is([disabled], [readonly], [aria-disabled='true' i], [aria-readonly='true' i])) {
237
- &::-webkit-calendar-picker-indicator {
238
- &:focus-within {
239
- --oui-outline-percentage: 0%;
240
- --oui-outline-value: var(--oui-gray-3);
241
- }
242
-
243
- @media (hover: hover) {
244
- &:hover {
245
- --oui-outline-percentage: 0%;
246
- --oui-outline-value: var(--oui-gray-3);
247
- }
248
- }
249
- }
250
-
251
- &::file-selector-button {
252
- --oui-background-value: var(--oui-gray-1);
253
-
254
- cursor: default;
255
- }
256
-
257
- &::range-thumb {
258
- --oui-background-value: var(--oui-gray-2);
259
-
260
- cursor: default;
261
- }
262
- }
263
-
264
- :where(&:is([disabled], [aria-disabled='true' i])) {
265
- &::-webkit-calendar-picker-indicator {
266
- opacity: 0.5;
267
- }
268
-
269
- &::range-thumb {
270
- --oui-background-value: var(--oui-gray-1);
271
-
272
- cursor: default;
273
- }
274
-
275
- &::range-track {
276
- --oui-background-percentage: 50%;
277
- --oui-background-value: var(--oui-gray-0);
278
- }
279
- }
280
- }
281
-
282
- :where(select.oui-input, .oui-input[list]) {
283
- padding-right: 2em;
284
- background-position: right 0.5em center;
285
- }
286
-
287
- select.oui-input:is([multiple]) {
288
- :where(&) {
289
- --oui-off: attr(oui-off);
290
- --oui-on: attr(oui-on, '\2713');
291
-
292
- padding: 0;
293
- }
294
-
295
- :where(& > option) {
296
- padding: 0.5em 0.75em;
297
- }
298
-
299
- :where(&[oui-off] > option) {
300
- &::before {
301
- content: var(--oui-off);
302
- margin: 0 0.75em 0 0;
303
- }
304
- }
305
-
306
- :where(& > option:nth-of-type(2n)) {
307
- background-color: color-mix(in oklab, var(--oui-blue-0), transparent 50%);
308
- }
309
-
310
- :where(& > option:checked) {
311
- background-color: var(--oui-blue-2);
312
- color: var(--oui-blue-9);
313
-
314
- &::before {
315
- content: var(--oui-on);
316
- margin: 0 0.75em 0 0;
317
- }
318
- }
319
- }
320
-
321
- :where(textarea.oui-input) {
322
- min-height: 4em;
323
- resize: vertical;
324
- transition:
325
- all 0.125s ease-in-out,
326
- height 0s;
327
- }
328
-
329
- :where(.oui-label, .oui-legend) {
330
- font-size: 0.875rem;
331
- font-weight: bold;
332
- align-self: flex-start;
333
- }
334
-
335
- .oui-label {
336
- :where(&) {
337
- cursor: pointer;
338
- transition: color 0.125s ease-in-out;
339
- }
340
-
341
- @media (hover: hover) {
342
- :where(&[for]:hover) {
343
- color: var(--oui-blue-8);
344
- }
345
- }
346
- }
347
-
348
- :where(.oui-legend) {
349
- padding: 0.5em;
350
- border: 1px solid var(--oui-gray-3);
351
- border-radius: 0.25em;
352
- }
353
-
354
- :where(.oui-switch, .oui-toggle) {
355
- --oui-background-percentage: 50%;
356
- --oui-background-value: var(--oui-gray-1);
357
- --oui-border-value: var(--oui-gray-3);
358
- --oui-foreground-percentage: 0%;
359
- --oui-foreground-value: var(--oui-gray-8);
360
- --oui-outline-percentage: 100%;
361
- --oui-outline-value: var(--oui-blue-6);
362
- --oui-shadow-percentage: 85%;
363
- --oui-shadow-value: var(--oui-gray-10);
364
-
365
- position: relative;
366
- cursor: pointer;
367
-
368
- &::before,
369
- &::after {
370
- display: inline-block;
371
- font-family: system-ui, sans-serif;
372
- position: absolute;
373
- transition: 0.125s ease-in-out;
374
- transition-property: background, outline, border, box-shadow, color;
375
- pointer-events: none;
376
- }
377
-
378
- &::before {
379
- background-color: color-mix(
380
- in oklab,
381
- var(--oui-background-value),
382
- transparent var(--oui-background-percentage)
383
- );
384
- outline: 4px solid
385
- color-mix(in oklab, var(--oui-outline-value), transparent var(--oui-outline-percentage));
386
- outline-offset: 0;
387
- border: 1px solid var(--oui-border-value);
388
- box-shadow: inset 0 1px 2px 0
389
- color-mix(in oklab, var(--oui-shadow-value), transparent var(--oui-shadow-percentage));
390
- }
391
-
392
- &::after {
393
- color: color-mix(
394
- in oklab,
395
- var(--oui-foreground-value),
396
- transparent var(--oui-foreground-percentage)
397
- );
398
- }
399
- }
400
-
401
- .oui-switch {
402
- :where(&) {
403
- padding: 0 3em 0 0;
404
-
405
- &::before {
406
- content: '';
407
- width: 2.5em;
408
- height: 1.5em;
409
- border-radius: 3em;
410
- right: 0;
411
- }
412
-
413
- &::after {
414
- content: attr(oui-off, '\2715');
415
- width: 1.5em;
416
- height: 1.5em;
417
- background-color: var(--oui-absolute);
418
- border-radius: 1.5em;
419
- box-shadow: 0 1px 2px 1px rgb(0 0 0 / 12.5%);
420
- font-size: 0.75em;
421
- font-weight: bold;
422
- line-height: 1.5em;
423
- text-align: center;
424
- top: 0.25em;
425
- right: 1.5em;
426
- }
427
- }
428
-
429
- :where(&:has(input:checked)) {
430
- --oui-foreground-percentage: 0%;
431
- --oui-foreground-value: var(--oui-blue-8);
432
-
433
- &::after {
434
- content: attr(oui-on, '\2713');
435
- box-shadow: 0 1px 2px 1px rgb(0 0 0 / 25%);
436
- right: 0.25em;
437
- }
438
- }
439
- }
440
-
441
- .oui-toggle {
442
- :where(&) {
443
- --oui-background-percentage: 100%;
444
- --oui-border-value: var(--oui-gray-4);
445
-
446
- padding: 0 0 0 2em;
447
-
448
- &::before {
449
- content: '';
450
- width: 1.5em;
451
- height: 1.5em;
452
- inset: 0 auto auto 0;
453
- }
454
-
455
- &::after {
456
- opacity: 0;
457
- }
458
- }
459
-
460
- :where(&:has(input[type='checkbox' i])) {
461
- --oui-foreground-percentage: 0%;
462
- --oui-foreground-value: white;
463
-
464
- &::before {
465
- border-radius: 0.25em;
466
- }
467
-
468
- &::after {
469
- content: attr(oui-on, '\2713');
470
- width: 1.5em;
471
- height: 1.5em;
472
- text-shadow: 0 1px 2px rgb(0 0 0 / 50%);
473
- font-weight: bold;
474
- line-height: 1.5em;
475
- text-align: center;
476
- inset: 0 auto auto 0;
477
- }
478
- }
479
-
480
- :where(&:has(input[type='radio' i])) {
481
- position: relative;
482
-
483
- &::before,
484
- &::after {
485
- border-radius: 50%;
486
- }
487
-
488
- &::after {
489
- content: '';
490
- width: 0.75em;
491
- height: 0.75em;
492
- background-color: var(--oui-absolute);
493
- box-shadow: 0 1px 2px 0 rgb(0 0 0 / 50%);
494
- inset: 0.375em auto auto 0.375em;
495
- }
496
- }
497
-
498
- :where(&:has(input:checked)) {
499
- &::after {
500
- opacity: 1;
501
- }
502
- }
503
- }
504
-
505
- .oui-switch,
506
- .oui-toggle {
507
- :where(&:has(input:checked)) {
508
- --oui-background-percentage: 25%;
509
- --oui-background-value: var(--oui-blue-6);
510
- --oui-border-value: var(--oui-blue-6);
511
- --oui-shadow-percentage: 50%;
512
- --oui-shadow-value: var(--oui-blue-8);
513
- }
514
-
515
- :where(&:focus-within) {
516
- --oui-border-value: var(--oui-blue-6);
517
- --oui-outline-percentage: 75%;
518
-
519
- color: var(--oui-blue-8);
520
- }
521
-
522
- :where(&:has(input:not([disabled], [aria-disabled='true' i])):focus-within) {
523
- --oui-background-percentage: 50%;
524
- }
525
-
526
- @media (hover: hover) {
527
- :where(&:has(input:not([disabled], [aria-disabled='true' i])):hover) {
528
- --oui-border-value: var(--oui-blue-4);
529
- --oui-outline-percentage: 90%;
530
- --oui-outline-value: var(--oui-blue-6);
531
-
532
- color: var(--oui-blue-8);
533
- }
534
-
535
- :where(&:has(input:not([disabled], [aria-disabled='true' i]):is(:checked)):hover) {
536
- --oui-background-percentage: 50%;
537
- --oui-background-value: var(--oui-blue-6);
538
- }
539
- }
540
-
541
- :where(&:has(input[disabled], input[aria-disabled='true' i])) {
542
- --oui-background-percentage: 50%;
543
- --oui-background-value: var(--oui-gray-0);
544
- --oui-border-value: var(--oui-gray-3);
545
- --oui-foreground-percentage: 25%;
546
- --oui-foreground-value: currentcolor;
547
-
548
- color: color-mix(
549
- in oklab,
550
- var(--oui-foreground-value),
551
- transparent var(--oui-foreground-percentage)
552
- );
553
- font-style: italic;
554
- cursor: default;
555
-
556
- &::after,
557
- &::before {
558
- font-style: normal;
559
- }
560
-
561
- &::after {
562
- box-shadow: 0 0 0 1px var(--oui-gray-3);
563
- text-shadow: none;
564
- }
565
- }
566
- }
567
-
568
- :where(label.oui-switch, label.oui-toggle) {
569
- display: inline-block;
570
- line-height: 1.5;
571
- }
572
-
573
- :where(.oui-switch input, .oui-toggle input) {
574
- @include miscMixins.visually-hidden;
575
- }
@@ -1,121 +0,0 @@
1
- /*! https://github.com/oscarpalmer/oui */
2
-
3
- @use './mixins/input.mixins.scss' as inputMixins;
4
- @use './mixins/misc.mixins.scss' as miscMixins;
5
-
6
- :where(oui-listbox, [oui-listbox-content]) {
7
- display: flex;
8
- flex-flow: column nowrap;
9
- }
10
-
11
- :where([oui-listbox-content]) {
12
- flex: 1;
13
- background-color: var(--oui-absolute);
14
- border: 1px solid var(--oui-gray-3);
15
- border-radius: 0.5em;
16
- }
17
-
18
- :where([oui-listbox-filter], [oui-listbox-header]) {
19
- &::after {
20
- content: '';
21
- width: 100%;
22
- height: 0.25em;
23
- background-image: linear-gradient(to bottom, rgb(0 0 0 / 12.5%), transparent);
24
- position: absolute;
25
- bottom: -0.25em;
26
- left: 0;
27
- }
28
- }
29
-
30
- :where([oui-listbox-filter]) {
31
- padding: 1em;
32
- background-color: var(--oui-yellow-0);
33
- border-radius: 0.5em 0.5em 0 0;
34
- position: relative;
35
- z-index: 2;
36
- }
37
-
38
- [oui-listbox-filter-input] {
39
- :where(&) {
40
- @include inputMixins.input;
41
-
42
- --oui-background-value: var(--oui-absolute);
43
-
44
- width: 100%;
45
- padding: 0.5em 0.75em;
46
- border-radius: 0.25em;
47
- position: relative;
48
- }
49
- }
50
-
51
- :where([oui-listbox-header]) {
52
- padding: 0.5em calc(0.75em / 0.75);
53
- background-color: var(--oui-gray-0);
54
- font-size: 0.75em;
55
- font-weight: bold;
56
- position: sticky;
57
- top: 0;
58
- z-index: 1;
59
- }
60
-
61
- :where([oui-listbox-hidden]) {
62
- @include miscMixins.visually-hidden;
63
-
64
- position: absolute;
65
- }
66
-
67
- :where([oui-listbox-list]) {
68
- height: fit-content;
69
- max-height: max(25vh, 32rem);
70
- flex: 1;
71
- overflow: auto;
72
- border-radius: 0 0 0.5em 0.5em;
73
- position: relative;
74
- }
75
-
76
- :where([oui-listbox-list-empty]) {
77
- display: none;
78
- }
79
-
80
- :where([oui-listbox-message]) {
81
- padding: 1em;
82
- flex: 1;
83
- align-content: center;
84
- text-align: center;
85
- font-style: italic;
86
- }
87
-
88
- [oui-listbox-option] {
89
- :where(&) {
90
- padding: 0.5em 0.75em;
91
- outline: 4px solid transparent;
92
- outline-offset: -4px;
93
- line-height: 1.25;
94
- cursor: pointer;
95
- }
96
-
97
- :where(&[aria-selected='true' i]) {
98
- background-color: var(--oui-blue-2);
99
- color: var(--oui-blue-9);
100
- }
101
-
102
- :where(oui-listbox[multiple] &[aria-selected='true' i])::before {
103
- content: '✓';
104
- margin: 0 0.75em 0 0;
105
- }
106
-
107
- oui-listbox:not([disabled], [readonly], [aria-disabled='true' i], [aria-readonly='true' i]) & {
108
- @media (hover: hover) {
109
- :where(&:hover) {
110
- background-color: var(--oui-blue-1);
111
- color: var(--oui-blue-8);
112
- }
113
- }
114
- }
115
- }
116
-
117
- :where(oui-listbox:focus-within [oui-listbox-option-active]) {
118
- background-color: var(--oui-blue-1);
119
- outline-color: var(--oui-blue-4);
120
- color: var(--oui-blue-8);
121
- }