@oscarpalmer/oui 0.36.0 → 0.38.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 (104) hide show
  1. package/dist/css/a11y.css +1 -0
  2. package/dist/css/badge.css +19 -15
  3. package/dist/css/button.css +40 -31
  4. package/dist/css/color-picker.css +377 -0
  5. package/dist/css/color.css +20 -21
  6. package/dist/css/combobox.css +140 -34
  7. package/dist/css/content.css +30 -10
  8. package/dist/css/floatable.css +12 -10
  9. package/dist/css/form.css +400 -129
  10. package/dist/css/listbox.css +43 -17
  11. package/dist/css/message.css +15 -10
  12. package/dist/css/mixins/badge.mixins.css +2 -0
  13. package/dist/css/mixins/button.mixins.css +2 -0
  14. package/dist/css/mixins/message.mixins.css +1 -0
  15. package/dist/css/mixins/misc.mixins.css +2 -0
  16. package/dist/css/mixins/shadow.mixins.css +1 -0
  17. package/dist/css/reset.css +31 -90
  18. package/dist/css/splitter.css +3 -3
  19. package/dist/css/tabs.css +103 -0
  20. package/dist/js/color-picker.d.mts +213 -0
  21. package/dist/js/color-picker.mjs +924 -0
  22. package/dist/js/combobox/dom.combobox.mjs +8 -4
  23. package/dist/js/combobox/event.combobox.mjs +1 -1
  24. package/dist/js/combobox/index.d.mts +1 -1
  25. package/dist/js/combobox/index.mjs +56 -2
  26. package/dist/js/combobox/misc.combobox.d.mts +1 -1
  27. package/dist/js/combobox/misc.combobox.mjs +1 -1
  28. package/dist/js/combobox/state.combobox.d.mts +1 -1
  29. package/dist/js/combobox/state.combobox.mjs +1 -1
  30. package/dist/js/dialog.mjs +2 -2
  31. package/dist/js/floatable/floatable.embedded.mjs +13 -10
  32. package/dist/js/focus-trap/focus-trap.embedded.mjs +9 -13
  33. package/dist/js/{index-EfkUSals.d.mts → index-DJdFlTLm.d.mts} +39 -1
  34. package/dist/js/index.d.mts +4 -2
  35. package/dist/js/index.mjs +5 -3
  36. package/dist/js/internal/draggable.mjs +20 -26
  37. package/dist/js/internal/listbox/listbox.data.mjs +1 -1
  38. package/dist/js/internal/listbox/listbox.dom.mjs +1 -1
  39. package/dist/js/internal/listbox/listbox.event.mjs +1 -1
  40. package/dist/js/internal/listbox/listbox.form.mjs +17 -16
  41. package/dist/js/internal/listbox/listbox.misc.mjs +1 -1
  42. package/dist/js/internal/listbox/listbox.state.mjs +4 -4
  43. package/dist/js/internal/navigable.d.mts +11 -5
  44. package/dist/js/internal/navigable.mjs +46 -19
  45. package/dist/js/listbox/event.listbox.mjs +1 -1
  46. package/dist/js/listbox/index.d.mts +38 -0
  47. package/dist/js/listbox/index.mjs +56 -2
  48. package/dist/js/listbox/misc.listbox.mjs +1 -1
  49. package/dist/js/listbox/state.listbox.mjs +1 -1
  50. package/dist/js/{listbox.data-BWd0PCy7.mjs → listbox.data-C7CRa5Ya.mjs} +5 -4
  51. package/dist/js/menu.mjs +1 -1
  52. package/dist/js/{misc.listbox-BI-XsTOf.mjs → misc.listbox-Cyz2CRDy.mjs} +2 -3
  53. package/dist/js/movable/movable.embedded.mjs +5 -8
  54. package/dist/js/popover.mjs +2 -2
  55. package/dist/js/resizable/resizable.embedded.mjs +21 -31
  56. package/dist/js/sortable/sortable.embedded.mjs +4 -4
  57. package/dist/js/splitter.mjs +20 -17
  58. package/dist/js/{state.combobox-4xq0FPCF.mjs → state.combobox-Qm3FWzYW.mjs} +3 -3
  59. package/dist/js/tabs.d.mts +25 -0
  60. package/dist/js/tabs.mjs +237 -0
  61. package/dist/js/tooltip.mjs +16 -15
  62. package/package.json +7 -5
  63. package/src/css/a11y.scss +2 -2
  64. package/src/css/badge.scss +8 -20
  65. package/src/css/button.scss +8 -47
  66. package/src/css/color-picker.scss +344 -0
  67. package/src/css/color.scss +20 -22
  68. package/src/css/combobox.scss +29 -57
  69. package/src/css/content.scss +34 -6
  70. package/src/css/floatable.scss +22 -19
  71. package/src/css/form.scss +94 -80
  72. package/src/css/listbox.scss +6 -34
  73. package/src/css/message.scss +16 -30
  74. package/src/css/mixins/badge.mixins.scss +53 -0
  75. package/src/css/mixins/button.mixins.scss +112 -0
  76. package/src/css/mixins/input.mixins.scss +114 -0
  77. package/src/css/mixins/message.mixins.scss +41 -0
  78. package/src/css/mixins/misc.mixins.scss +48 -0
  79. package/src/css/mixins/shadow.mixins.scss +57 -0
  80. package/src/css/reset.scss +39 -88
  81. package/src/css/splitter.scss +3 -3
  82. package/src/css/tabs.scss +74 -0
  83. package/src/js/color-picker.ts +1653 -0
  84. package/src/js/combobox/dom.combobox.ts +4 -0
  85. package/src/js/combobox/index.ts +63 -1
  86. package/src/js/dialog.ts +1 -1
  87. package/src/js/floatable/floatable.embedded.ts +18 -14
  88. package/src/js/focus-trap/focus-trap.embedded.ts +11 -19
  89. package/src/js/index.ts +2 -0
  90. package/src/js/internal/draggable.ts +29 -33
  91. package/src/js/internal/listbox/listbox.dom.ts +2 -1
  92. package/src/js/internal/listbox/listbox.form.ts +32 -22
  93. package/src/js/internal/listbox/listbox.state.ts +3 -3
  94. package/src/js/internal/navigable.ts +82 -23
  95. package/src/js/listbox/index.ts +62 -0
  96. package/src/js/listbox/state.listbox.ts +0 -2
  97. package/src/js/movable/movable.embedded.ts +11 -13
  98. package/src/js/popover.ts +1 -1
  99. package/src/js/resizable/resizable.embedded.ts +25 -39
  100. package/src/js/splitter.ts +21 -18
  101. package/src/js/tabs.ts +441 -0
  102. package/src/js/tooltip.ts +20 -17
  103. package/src/css/mixins.scss +0 -194
  104. /package/dist/css/{mixins.css → mixins/input.mixins.css} +0 -0
@@ -0,0 +1,103 @@
1
+ /*! https://github.com/oscarpalmer/oui */
2
+
3
+
4
+ :where(oui-tabs) {
5
+ display: flex;
6
+ }
7
+ :where(oui-tabs:not([orientation=horizontal i])) {
8
+ flex-flow: column nowrap;
9
+ }
10
+ :where(oui-tabs[orientation=vertical i]) {
11
+ flex-flow: row nowrap;
12
+ }
13
+
14
+ :where([oui-tabs-content]) {
15
+ padding: 1em;
16
+ flex: 1;
17
+ background-color: var(--oui-absolute);
18
+ border: 1px solid var(--oui-gray-3);
19
+ position: relative;
20
+ z-index: 0;
21
+ }
22
+
23
+ :where([oui-tabs-tab]) {
24
+ --oui-background-percentage: 25%;
25
+ --oui-background-value: var(--oui-gray-2);
26
+ --oui-foreground-percentage: 0%;
27
+ --oui-foreground-value: var(--oui-gray-8);
28
+ --oui-outline-percentage: 100%;
29
+ --oui-outline-value: var(--oui-gray-6);
30
+ --oui-shadow-inset: color-mix(in oklab, var(--oui-absolute), transparent 75%);
31
+ --oui-shadow-percentage: 82.5%;
32
+ --oui-shadow-value: color-mix(
33
+ in oklab,
34
+ var(--oui-outline-value),
35
+ transparent var(--oui-shadow-percentage)
36
+ );
37
+ box-shadow: inset 0 1px 0 0 var(--oui-shadow-inset), 0 0 0 1px var(--oui-shadow-value), 0 1px 2px -0.5px var(--oui-shadow-value), 0 2px 4px -1px var(--oui-shadow-value), 0 4px 8px -2px var(--oui-shadow-value);
38
+ padding: 0.5em 0.75em;
39
+ display: inline-flex;
40
+ flex-flow: row wrap;
41
+ gap: 0.75em;
42
+ align-items: center;
43
+ border-radius: 0.25em;
44
+ background-color: color-mix(in oklab, var(--oui-background-value), transparent var(--oui-background-percentage));
45
+ outline: 4px solid color-mix(in oklab, var(--oui-outline-value), transparent var(--oui-outline-percentage));
46
+ border: none;
47
+ color: color-mix(in oklab, var(--oui-foreground-value), transparent var(--oui-foreground-percentage));
48
+ line-height: 1.25;
49
+ transition: 0.125s ease-in-out;
50
+ transition-property: background, outline, box-shadow, color;
51
+ }
52
+ :where([oui-tabs-tab]):focus-visible {
53
+ --oui-outline-percentage: 75%;
54
+ }
55
+ @media (hover: hover) {
56
+ :where([oui-tabs-tab]):not([disabled], [aria-disabled=true i]):hover {
57
+ --oui-background-percentage: 50%;
58
+ --oui-foreground-percentage: 25%;
59
+ --oui-shadow-percentage: 90%;
60
+ }
61
+ }
62
+ :where([oui-tabs-tab]):not([disabled], [aria-disabled=true i]):active {
63
+ 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);
64
+ scale: 0.95;
65
+ }
66
+ :where([oui-tabs-tab]):not([disabled], [aria-disabled=true i]):active[aria-pressed=true i], :where([oui-tabs-tab]):not([disabled], [aria-disabled=true i]):active[aria-selected=true i] {
67
+ scale: 1;
68
+ }
69
+ :where([oui-tabs-tab])[disabled], :where([oui-tabs-tab])[aria-disabled=true i] {
70
+ --oui-background-percentage: 80%;
71
+ --oui-foreground-percentage: 25%;
72
+ --oui-shadow-percentage: 92.5%;
73
+ font-style: italic;
74
+ }
75
+ :where([oui-tabs-tab]) {
76
+ font-size: 0.75rem;
77
+ flex-shrink: 0;
78
+ align-self: flex-end;
79
+ }
80
+ :where([oui-tabs-tab][aria-selected=true i]) {
81
+ --oui-background-percentage: 80%;
82
+ box-shadow: 0 0 0 1px var(--oui-shadow-value), inset 0 1px 2px -0.5px var(--oui-shadow-value), inset 0 2px 4px -1px var(--oui-shadow-value);
83
+ }
84
+
85
+ :where([oui-tabs-tablist]) {
86
+ display: flex;
87
+ gap: 0.5em;
88
+ position: relative;
89
+ z-index: 0;
90
+ }
91
+ :where([oui-tabs-tablist]:focus-within) {
92
+ z-index: 1;
93
+ }
94
+ :where([oui-tabs-tablist][aria-orientation=horizontal i]) {
95
+ margin: 0 0 0.5em;
96
+ flex-flow: row wrap;
97
+ }
98
+ :where([oui-tabs-tablist][aria-orientation=vertical i]) {
99
+ margin: 0 0.5em 0 0;
100
+ flex-flow: column wrap;
101
+ }
102
+
103
+
@@ -0,0 +1,213 @@
1
+ import { Color, HSLAColor, HSLColor, HWBAColor, HWBColor, RGBAColor, RGBColor } from "@oscarpalmer/atoms/color";
2
+ //#region src/js/color-picker.d.ts
3
+ declare global {
4
+ interface HTMLElementTagNameMap {
5
+ [TAGNAME]: OuiColorPickerElement;
6
+ }
7
+ }
8
+ declare class OuiColorPickerElement extends HTMLElement {
9
+ #private;
10
+ static formAssociated: boolean;
11
+ static observedAttributes: string[];
12
+ /**
13
+ * Is the color picker disabled?
14
+ */
15
+ get disabled(): boolean;
16
+ /**
17
+ * Should the color picker be disabled?
18
+ */
19
+ set disabled(value: boolean);
20
+ /**
21
+ * Form element associated with the color picker
22
+ */
23
+ get form(): HTMLFormElement | null;
24
+ /**
25
+ * Color value as hexadecimal string
26
+ */
27
+ get hex(): string;
28
+ /**
29
+ * Set color value from a hexadecimal string
30
+ */
31
+ set hex(value: string);
32
+ /**
33
+ * Color value as hexadecimal string with alpha channel
34
+ */
35
+ get hexa(): string;
36
+ /**
37
+ * Set color value from a hexadecimal string with alpha channel
38
+ */
39
+ set hexa(value: string);
40
+ /**
41
+ * Color value as an _HSL_ color object
42
+ */
43
+ get hsl(): HSLColor;
44
+ /**
45
+ * Set color value from an _HSL_ color object
46
+ */
47
+ set hsl(value: HSLColor);
48
+ /**
49
+ * Color value as an _HSLA_ color object _(HSL with alpha channel)_
50
+ */
51
+ get hsla(): HSLAColor;
52
+ /**
53
+ * Set color value from an _HSLA_ color object _(HSL with alpha channel)_
54
+ */
55
+ set hsla(value: HSLAColor);
56
+ /**
57
+ * Color value as an _HWB_ color object
58
+ */
59
+ get hwb(): HWBColor;
60
+ /**
61
+ * Set color value from an _HWB_ color object
62
+ */
63
+ set hwb(value: HWBColor);
64
+ /**
65
+ * Color value as an _HWBA_ color object _(HWB with alpha channel)_
66
+ */
67
+ get hwba(): HWBAColor;
68
+ /**
69
+ * Set color value from an _HWBA_ color object _(HWB with alpha channel)_
70
+ */
71
+ set hwba(value: HWBAColor);
72
+ /**
73
+ * Text input value
74
+ */
75
+ get input(): string;
76
+ /**
77
+ * Label elements associated with the color picker
78
+ */
79
+ get labels(): NodeList;
80
+ /**
81
+ * Is the color picker readonly?
82
+ */
83
+ get readonly(): boolean;
84
+ /**
85
+ * Should the color picker be readonly?
86
+ */
87
+ set readonly(value: boolean);
88
+ /**
89
+ * Is the color picker required?
90
+ */
91
+ get required(): boolean;
92
+ /**
93
+ * Should the color picker be required?
94
+ */
95
+ set required(value: boolean);
96
+ /**
97
+ * Color value as an _RGB_ color object
98
+ */
99
+ get rgb(): RGBColor;
100
+ /**
101
+ * Set color value from an _RGB_ color object
102
+ */
103
+ set rgb(value: RGBColor);
104
+ /**
105
+ * Color value as an _RGBA_ color object _(RGB with alpha channel)_
106
+ */
107
+ get rgba(): RGBAColor;
108
+ /**
109
+ * Set color value from an _RGBA_ color object _(RGB with alpha channel)_
110
+ */
111
+ set rgba(value: RGBAColor);
112
+ /**
113
+ * Validation message for the color picker
114
+ */
115
+ get validationMessage(): string;
116
+ /**
117
+ * Validity state for the color picker
118
+ */
119
+ get validity(): ValidityState;
120
+ /**
121
+ * Current color value
122
+ */
123
+ get value(): string;
124
+ /**
125
+ * Set color value from a string, _HSL(A)_, _HWB(A)_, or _RGB(A)_ color object
126
+ */
127
+ set value(value: string | HSLColor | HSLAColor | HWBColor | HWBAColor | RGBColor | RGBAColor);
128
+ /**
129
+ * Can the color picker be validated?
130
+ */
131
+ get willValidate(): boolean;
132
+ constructor();
133
+ attributeChangedCallback(name: string, _: string | null, value: string | null): void;
134
+ /**
135
+ * Check if the color picker is valid
136
+ *
137
+ * @returns `true` if the color picker is valid, otherwise `false`
138
+ */
139
+ checkValidity(): boolean;
140
+ /**
141
+ * Clear the color picker's value
142
+ */
143
+ clear(): void;
144
+ connectedCallback(): void;
145
+ disconnectedCallback(): void;
146
+ formDisabledCallback(disabled: boolean): void;
147
+ formResetCallback(): void;
148
+ formStateRestoreCallback(state: unknown, reason: unknown): void;
149
+ /**
150
+ * Check if the color picker is valid and report any validation errors
151
+ *
152
+ * @returns `true` if the color picker is valid, otherwise `false`
153
+ */
154
+ reportValidity(): boolean;
155
+ /**
156
+ * Set a custom validation message for the color picker
157
+ *
158
+ * @param message Validation message
159
+ */
160
+ setCustomValidity(message: string): void;
161
+ /**
162
+ * Set localizations for a specific language
163
+ *
164
+ * @param language Language code
165
+ * @param localizations Localizations for language
166
+ */
167
+ setLocalizations(language: string, localizations: Partial<OuiColorPickerLocalizations>): void;
168
+ /**
169
+ * Set localizations for one or more languages
170
+ *
171
+ * @param localizations Localizations for one or more languages
172
+ */
173
+ setLocalizations(localizations: Record<string, Partial<OuiColorPickerLocalizations>>): void;
174
+ }
175
+ declare class OuiColorPickerEvent extends Event {
176
+ readonly valid: boolean;
177
+ readonly value: OuiColorPickerEventValue;
178
+ constructor(type: 'oui:change' | 'oui:input', color: Color, valid: boolean);
179
+ }
180
+ type OuiColorPickerEventValue = {
181
+ hex: string;
182
+ hexa: string;
183
+ hsl: HSLColor;
184
+ hsla: HSLAColor;
185
+ hwb: HWBColor;
186
+ hwba: HWBAColor;
187
+ rgb: RGBColor;
188
+ rgba: RGBAColor;
189
+ };
190
+ type OuiColorPickerLocalizations = {
191
+ hue: string;
192
+ invalid: string;
193
+ lightnessSaturationLabel: string;
194
+ lightnessSaturationValue: string | ((lightness: number, saturation: number) => string);
195
+ opacity: string;
196
+ toggle: string;
197
+ };
198
+ /**
199
+ * Set localizations for a specific language
200
+ *
201
+ * @param language Language code
202
+ * @param localizations Localizations for language
203
+ */
204
+ declare function setColorPickerLocalizations(language: string, localizations: Partial<OuiColorPickerLocalizations>): void;
205
+ /**
206
+ * Set localizations for one or more languages
207
+ *
208
+ * @param localizations Localizations for one or more languages
209
+ */
210
+ declare function setColorPickerLocalizations(localizations: Record<string, Partial<OuiColorPickerLocalizations>>): void;
211
+ declare const TAGNAME = "oui-color-picker";
212
+ //#endregion
213
+ export { OuiColorPickerElement, OuiColorPickerEvent, setColorPickerLocalizations };