@motech-development/breeze-ui 4.0.0 → 4.1.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.
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +163 -61
- package/lib/index.js.map +1 -1
- package/lib/patterns/AppearanceControl/AppearanceControl.d.ts +8 -0
- package/lib/patterns/AppearanceControl/AppearanceControl.d.ts.map +1 -0
- package/lib/primitives/Button/Button.d.ts +2 -2
- package/lib/primitives/Button/Button.d.ts.map +1 -1
- package/lib/provider/BreezeContext.d.ts +6 -1
- package/lib/provider/BreezeContext.d.ts.map +1 -1
- package/lib/provider/BreezeProvider.d.ts +21 -4
- package/lib/provider/BreezeProvider.d.ts.map +1 -1
- package/lib/provider/en-GB.d.ts +4 -0
- package/lib/provider/en-GB.d.ts.map +1 -1
- package/lib/styles.css +1 -1
- package/package.json +1 -1
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
export { default as AppearanceControl } from './patterns/AppearanceControl/AppearanceControl';
|
|
1
2
|
export type { ButtonProps, ButtonVariant, ControlSize, } from './primitives/Button/Button';
|
|
2
3
|
export { Button } from './primitives/Button/Button';
|
|
4
|
+
export type { Appearance, ResolvedAppearance } from './provider/BreezeContext';
|
|
3
5
|
export type { BreezeProviderProps } from './provider/BreezeProvider';
|
|
4
6
|
export { BreezeProvider } from './provider/BreezeProvider';
|
|
5
7
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,WAAW,EACX,aAAa,EACb,WAAW,GACZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AAC9F,YAAY,EACV,WAAW,EACX,aAAa,EACb,WAAW,GACZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -1,19 +1,79 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import { ToggleButton as e } from "react-aria-components/ToggleButton";
|
|
2
|
+
import { ToggleButtonGroup as t } from "react-aria-components/ToggleButtonGroup";
|
|
3
|
+
import { createContext as n, createElement as r, useCallback as i, useContext as a, useEffect as o, useLayoutEffect as s, useMemo as c, useState as l } from "react";
|
|
4
|
+
import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
5
|
+
import { Button as p } from "react-aria-components/Button";
|
|
6
|
+
import { ProgressBarContext as m } from "react-aria-components/ProgressBar";
|
|
7
|
+
import { useSlottedContext as h } from "react-aria-components/slots";
|
|
8
|
+
import { I18nProvider as g, useLocale as _ } from "react-aria-components/I18nProvider";
|
|
7
9
|
//#region src/provider/BreezeContext.ts
|
|
8
|
-
var
|
|
9
|
-
function
|
|
10
|
-
let e =
|
|
10
|
+
var v = n(null);
|
|
11
|
+
function y() {
|
|
12
|
+
let e = a(v);
|
|
11
13
|
if (e === null) throw Error("Breeze components must be rendered within BreezeProvider.");
|
|
12
14
|
return e;
|
|
13
15
|
}
|
|
14
16
|
//#endregion
|
|
17
|
+
//#region src/patterns/AppearanceControl/AppearanceControl.tsx
|
|
18
|
+
var b = {
|
|
19
|
+
base: {
|
|
20
|
+
control: "breeze:flex breeze:items-center breeze:gap-breeze-2 breeze:font-breeze-sans",
|
|
21
|
+
group: "breeze:flex breeze:items-center breeze:gap-breeze-2",
|
|
22
|
+
label: "breeze:grow breeze:text-breeze-sm breeze:text-breeze-ink",
|
|
23
|
+
option: "breeze:inline-flex breeze:items-center breeze:min-block-breeze-sm breeze:ps-breeze-3 breeze:pe-breeze-3 breeze:border breeze:border-solid breeze:border-breeze-line-strong breeze:rounded-breeze-full breeze:bg-breeze-surface breeze:text-breeze-xs breeze:font-semibold breeze:text-breeze-ink breeze:cursor-pointer breeze:outline-offset-2 breeze:data-[hovered]:bg-breeze-sunken breeze:data-[focus-visible]:outline-2 breeze:data-[focus-visible]:outline-solid breeze:data-[focus-visible]:outline-breeze-brand breeze:any-pointer-coarse:min-block-breeze-tap breeze:any-pointer-coarse:min-inline-breeze-tap"
|
|
24
|
+
},
|
|
25
|
+
compound: {},
|
|
26
|
+
size: {},
|
|
27
|
+
state: { selected: "breeze:data-[selected]:border-breeze-brand breeze:data-[selected]:bg-breeze-brand-soft breeze:data-[selected]:text-breeze-brand-text breeze:forced-colors:data-[selected]:outline-2 breeze:forced-colors:data-[selected]:outline-offset-2" },
|
|
28
|
+
variant: {}
|
|
29
|
+
}, x = [
|
|
30
|
+
{
|
|
31
|
+
message: "appearanceLight",
|
|
32
|
+
value: "light"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
message: "appearanceAutomatic",
|
|
36
|
+
value: "automatic"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
message: "appearanceDark",
|
|
40
|
+
value: "dark"
|
|
41
|
+
}
|
|
42
|
+
];
|
|
43
|
+
function S(e) {
|
|
44
|
+
return x.some((t) => t.value === e);
|
|
45
|
+
}
|
|
46
|
+
function C() {
|
|
47
|
+
let { appearance: n, getMessageLocale: r, messages: i, setAppearance: a } = y();
|
|
48
|
+
return /* @__PURE__ */ f("div", {
|
|
49
|
+
className: b.base.control,
|
|
50
|
+
children: [/* @__PURE__ */ d("span", {
|
|
51
|
+
className: b.base.label,
|
|
52
|
+
lang: r("appearance"),
|
|
53
|
+
children: i.appearance
|
|
54
|
+
}), /* @__PURE__ */ d(t, {
|
|
55
|
+
"aria-label": i.appearance,
|
|
56
|
+
className: b.base.group,
|
|
57
|
+
disallowEmptySelection: !0,
|
|
58
|
+
lang: r("appearance"),
|
|
59
|
+
onSelectionChange: (e) => {
|
|
60
|
+
let [t] = e;
|
|
61
|
+
S(t) && a(t);
|
|
62
|
+
},
|
|
63
|
+
selectedKeys: [n],
|
|
64
|
+
selectionMode: "single",
|
|
65
|
+
children: x.map((t) => /* @__PURE__ */ d(e, {
|
|
66
|
+
className: [b.base.option, b.state.selected].join(" "),
|
|
67
|
+
id: t.value,
|
|
68
|
+
lang: r(t.message),
|
|
69
|
+
children: i[t.message]
|
|
70
|
+
}, t.value))
|
|
71
|
+
})]
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
//#endregion
|
|
15
75
|
//#region src/primitives/Button/Button.tsx
|
|
16
|
-
var
|
|
76
|
+
var w = {
|
|
17
77
|
base: {
|
|
18
78
|
button: "breeze:relative breeze:inline-grid breeze:items-center breeze:justify-center breeze:gap-breeze-2 breeze:border breeze:border-solid breeze:rounded-breeze-ctl breeze:font-breeze-sans breeze:text-breeze-sm breeze:leading-breeze-snug breeze:cursor-pointer breeze:select-none breeze:[text-align:center] breeze:outline-offset-2 breeze:data-[focus-visible]:outline-2 breeze:data-[focus-visible]:outline-solid breeze:data-[focus-visible]:outline-breeze-brand breeze:any-pointer-coarse:min-block-breeze-tap breeze:any-pointer-coarse:min-inline-breeze-tap",
|
|
19
79
|
label: "breeze:[grid-area:1/1]",
|
|
@@ -43,85 +103,127 @@ var m = {
|
|
|
43
103
|
secondary: "breeze:border-breeze-line-strong breeze:bg-breeze-surface breeze:text-breeze-ink breeze:data-[hovered]:bg-breeze-sunken breeze:data-[pressed]:bg-breeze-sunken"
|
|
44
104
|
}
|
|
45
105
|
};
|
|
46
|
-
function
|
|
47
|
-
let e =
|
|
48
|
-
return /* @__PURE__ */
|
|
106
|
+
function T() {
|
|
107
|
+
let e = h(m), { getMessageLocale: t, messages: n } = y();
|
|
108
|
+
return /* @__PURE__ */ d("progress", {
|
|
49
109
|
"aria-label": n.loading,
|
|
50
|
-
className:
|
|
110
|
+
className: w.state.loadingStatus,
|
|
51
111
|
id: e?.id,
|
|
52
|
-
lang: t
|
|
112
|
+
lang: t("loading")
|
|
53
113
|
});
|
|
54
114
|
}
|
|
55
|
-
function
|
|
56
|
-
|
|
115
|
+
function E({ "aria-controls": e, "aria-describedby": t, "aria-expanded": n, "aria-haspopup": i, "aria-label": a, "aria-labelledby": o, children: s, disabled: c = !1, form: l, id: m, loading: h = !1, name: g, onAction: _, ref: v, size: b = "md", type: x = "button", value: S, variant: C = "primary" }) {
|
|
116
|
+
y();
|
|
57
117
|
let E = [
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
118
|
+
w.base.button,
|
|
119
|
+
w.variant[C],
|
|
120
|
+
w.size[b],
|
|
121
|
+
c && w.state.disabled,
|
|
122
|
+
h && w.state.loading
|
|
63
123
|
].filter(Boolean).join(" ");
|
|
64
|
-
return /* @__PURE__ */
|
|
124
|
+
return /* @__PURE__ */ f(p, {
|
|
65
125
|
"aria-controls": e,
|
|
66
|
-
"aria-describedby":
|
|
67
|
-
"aria-expanded":
|
|
68
|
-
"aria-haspopup":
|
|
69
|
-
"aria-label":
|
|
70
|
-
"aria-labelledby":
|
|
126
|
+
"aria-describedby": t,
|
|
127
|
+
"aria-expanded": n,
|
|
128
|
+
"aria-haspopup": i,
|
|
129
|
+
"aria-label": a ?? s,
|
|
130
|
+
"aria-labelledby": o,
|
|
71
131
|
className: E,
|
|
72
|
-
form:
|
|
73
|
-
id:
|
|
74
|
-
isDisabled:
|
|
75
|
-
isPending:
|
|
76
|
-
name:
|
|
77
|
-
onPress: () =>
|
|
78
|
-
ref:
|
|
79
|
-
render: (e) =>
|
|
132
|
+
form: l,
|
|
133
|
+
id: m,
|
|
134
|
+
isDisabled: c,
|
|
135
|
+
isPending: h,
|
|
136
|
+
name: g,
|
|
137
|
+
onPress: () => _?.(),
|
|
138
|
+
ref: v,
|
|
139
|
+
render: (e) => r("button", {
|
|
80
140
|
...e,
|
|
81
|
-
"aria-busy":
|
|
82
|
-
onClick:
|
|
83
|
-
type:
|
|
141
|
+
"aria-busy": h || void 0,
|
|
142
|
+
onClick: h ? (e) => e.preventDefault() : e.onClick,
|
|
143
|
+
type: x === "submit" ? "submit" : "button"
|
|
84
144
|
}),
|
|
85
|
-
type:
|
|
86
|
-
value:
|
|
87
|
-
children: [/* @__PURE__ */
|
|
88
|
-
className: [
|
|
89
|
-
children:
|
|
90
|
-
}),
|
|
145
|
+
type: x,
|
|
146
|
+
value: S,
|
|
147
|
+
children: [/* @__PURE__ */ d("span", {
|
|
148
|
+
className: [w.base.label, h && w.state.loadingLabel].filter(Boolean).join(" "),
|
|
149
|
+
children: s
|
|
150
|
+
}), h && /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d(T, {}), /* @__PURE__ */ d("span", {
|
|
91
151
|
"aria-hidden": "true",
|
|
92
|
-
className: [
|
|
152
|
+
className: [w.base.skeleton, w.compound.loading[C]].join(" "),
|
|
93
153
|
"data-breeze-skeleton": ""
|
|
94
154
|
})] })]
|
|
95
155
|
});
|
|
96
156
|
}
|
|
97
157
|
//#endregion
|
|
98
158
|
//#region src/provider/en-GB.ts
|
|
99
|
-
var
|
|
159
|
+
var D = {
|
|
160
|
+
appearance: "Appearance",
|
|
161
|
+
appearanceAutomatic: "Auto",
|
|
162
|
+
appearanceDark: "Dark",
|
|
163
|
+
appearanceLight: "Light",
|
|
164
|
+
loading: "Loading"
|
|
165
|
+
};
|
|
100
166
|
//#endregion
|
|
101
167
|
//#region src/provider/BreezeProvider.tsx
|
|
102
|
-
function
|
|
103
|
-
|
|
104
|
-
|
|
168
|
+
function O(e, t) {
|
|
169
|
+
return e === "automatic" ? t ? "dark" : "light" : e;
|
|
170
|
+
}
|
|
171
|
+
function k({ children: e }) {
|
|
172
|
+
let { direction: t, locale: n } = _();
|
|
173
|
+
return /* @__PURE__ */ d("div", {
|
|
105
174
|
"data-breeze-root": "",
|
|
106
175
|
dir: t,
|
|
107
176
|
lang: n,
|
|
108
177
|
children: e
|
|
109
178
|
});
|
|
110
179
|
}
|
|
111
|
-
function
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
180
|
+
function A({ appearance: e, children: t, defaultAppearance: n = "automatic", locale: r, messages: a, onAppearanceChange: u }) {
|
|
181
|
+
let [f] = l(() => typeof window > "u" || !window.matchMedia ? null : window.matchMedia("(prefers-color-scheme: dark)")), [p, m] = l(() => f?.matches ?? !1), [h, _] = l(n), y = e ?? h, b = O(y, p);
|
|
182
|
+
o(() => {
|
|
183
|
+
if (!f) return;
|
|
184
|
+
m(f.matches);
|
|
185
|
+
let e = (e) => {
|
|
186
|
+
m(e.matches);
|
|
187
|
+
};
|
|
188
|
+
return f.addEventListener("change", e), () => f.removeEventListener("change", e);
|
|
189
|
+
}, [f]), s(() => {
|
|
190
|
+
let { documentElement: e } = document, t = e.dataset.theme, n = e.style.colorScheme;
|
|
191
|
+
return e.dataset.theme = b, e.style.colorScheme = b, () => {
|
|
192
|
+
t === void 0 ? delete e.dataset.theme : e.dataset.theme = t, e.style.colorScheme = n;
|
|
193
|
+
};
|
|
194
|
+
}, [b]);
|
|
195
|
+
let x = i((t) => {
|
|
196
|
+
e === void 0 && _(t), u?.(t);
|
|
197
|
+
}, [e, u]), S = i((e) => a?.[e] === void 0 ? "en-GB" : r, [r, a]);
|
|
198
|
+
return /* @__PURE__ */ d(g, {
|
|
199
|
+
locale: r,
|
|
200
|
+
children: /* @__PURE__ */ d(v, {
|
|
201
|
+
value: c(() => ({
|
|
202
|
+
appearance: y,
|
|
203
|
+
getMessageLocale: S,
|
|
204
|
+
locale: r,
|
|
205
|
+
messages: {
|
|
206
|
+
appearance: a?.appearance ?? D.appearance,
|
|
207
|
+
appearanceAutomatic: a?.appearanceAutomatic ?? D.appearanceAutomatic,
|
|
208
|
+
appearanceDark: a?.appearanceDark ?? D.appearanceDark,
|
|
209
|
+
appearanceLight: a?.appearanceLight ?? D.appearanceLight,
|
|
210
|
+
loading: a?.loading ?? D.loading
|
|
211
|
+
},
|
|
212
|
+
resolvedAppearance: b,
|
|
213
|
+
setAppearance: x
|
|
214
|
+
}), [
|
|
215
|
+
y,
|
|
216
|
+
S,
|
|
217
|
+
r,
|
|
218
|
+
a,
|
|
219
|
+
b,
|
|
220
|
+
x
|
|
221
|
+
]),
|
|
222
|
+
children: /* @__PURE__ */ d(k, { children: t })
|
|
121
223
|
})
|
|
122
224
|
});
|
|
123
225
|
}
|
|
124
226
|
//#endregion
|
|
125
|
-
export {
|
|
227
|
+
export { C as AppearanceControl, A as BreezeProvider, E as Button };
|
|
126
228
|
|
|
127
229
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/provider/BreezeContext.ts","../src/primitives/Button/Button.tsx","../src/provider/en-GB.ts","../src/provider/BreezeProvider.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type enGB from './en-GB';\n\ninterface BreezeContextValue {\n locale: string;\n messageLocale: string;\n messages: typeof enGB;\n}\n\nexport const BreezeContext = createContext<BreezeContextValue | null>(null);\n\nexport function useBreezeContext(): BreezeContextValue {\n const context = useContext(BreezeContext);\n\n if (context === null) {\n throw new Error(\n 'Breeze components must be rendered within BreezeProvider.',\n );\n }\n\n return context;\n}\n","import type { ButtonHTMLAttributes, ReactElement, Ref } from 'react';\nimport { createElement } from 'react';\nimport { Button as AriaButton } from 'react-aria-components/Button';\nimport { ProgressBarContext } from 'react-aria-components/ProgressBar';\nimport { useSlottedContext } from 'react-aria-components/slots';\nimport { useBreezeContext } from '../../provider/BreezeContext';\n\nconst variants = {\n base: {\n button:\n 'breeze:relative breeze:inline-grid breeze:items-center breeze:justify-center breeze:gap-breeze-2 breeze:border breeze:border-solid breeze:rounded-breeze-ctl breeze:font-breeze-sans breeze:text-breeze-sm breeze:leading-breeze-snug breeze:cursor-pointer breeze:select-none breeze:[text-align:center] breeze:outline-offset-2 breeze:data-[focus-visible]:outline-2 breeze:data-[focus-visible]:outline-solid breeze:data-[focus-visible]:outline-breeze-brand breeze:any-pointer-coarse:min-block-breeze-tap breeze:any-pointer-coarse:min-inline-breeze-tap',\n label: 'breeze:[grid-area:1/1]',\n skeleton:\n 'breeze:[grid-area:1/1] breeze:inline-size-full breeze:block-size-breeze-3 breeze:rounded-breeze-xs',\n },\n compound: {\n loading: {\n danger: 'breeze:bg-breeze-on-brand/35',\n primary: 'breeze:bg-breeze-on-brand/35',\n quiet: 'breeze:bg-breeze-line-strong',\n secondary: 'breeze:bg-breeze-line-strong',\n },\n },\n size: {\n lg: 'breeze:min-block-breeze-lg breeze:ps-breeze-5 breeze:pe-breeze-5 breeze:py-breeze-3',\n md: 'breeze:min-block-breeze-md breeze:ps-breeze-3 breeze:pe-breeze-3 breeze:py-breeze-2',\n sm: 'breeze:min-block-breeze-sm breeze:ps-breeze-3 breeze:pe-breeze-3 breeze:py-breeze-1',\n },\n state: {\n disabled: 'breeze:cursor-not-allowed breeze:opacity-50',\n loading: 'breeze:cursor-wait',\n loadingLabel: 'breeze:opacity-0',\n loadingStatus: 'breeze:sr-only',\n },\n variant: {\n danger:\n 'breeze:border-transparent breeze:bg-breeze-danger-fill breeze:text-breeze-on-brand breeze:data-[hovered]:bg-breeze-danger-hover breeze:data-[pressed]:bg-breeze-danger-hover',\n primary:\n 'breeze:border-transparent breeze:bg-breeze-brand breeze:text-breeze-on-brand breeze:data-[hovered]:bg-breeze-brand-hover breeze:data-[pressed]:bg-breeze-brand-hover',\n quiet:\n 'breeze:border-transparent breeze:bg-transparent breeze:text-breeze-brand-text breeze:data-[hovered]:bg-breeze-brand-soft breeze:data-[pressed]:bg-breeze-brand-soft',\n secondary:\n 'breeze:border-breeze-line-strong breeze:bg-breeze-surface breeze:text-breeze-ink breeze:data-[hovered]:bg-breeze-sunken breeze:data-[pressed]:bg-breeze-sunken',\n },\n} as const;\n\n/** Connect the pending announcement to a phrasing element inside the button. */\nfunction LoadingStatus(): ReactElement {\n const progress = useSlottedContext(ProgressBarContext);\n const { messageLocale, messages } = useBreezeContext();\n\n return (\n <progress\n aria-label={messages.loading}\n className={variants.state.loadingStatus}\n id={progress?.id}\n lang={messageLocale}\n />\n );\n}\n\n/** Button-specific visual treatments. */\nexport type ButtonVariant = keyof typeof variants.variant;\n\n/** Shared control sizes: 34, 38 and 52px, with a 44px coarse-pointer floor. */\nexport type ControlSize = 'sm' | 'md' | 'lg';\n\n/** An intentional native subset; styling, slots and DOM event callbacks are closed. */\ntype NativeButtonProps = Pick<\n ButtonHTMLAttributes<HTMLButtonElement>,\n | 'aria-controls'\n | 'aria-describedby'\n | 'aria-expanded'\n | 'aria-haspopup'\n | 'aria-label'\n | 'aria-labelledby'\n | 'form'\n | 'id'\n | 'name'\n>;\n\nexport interface ButtonProps extends NativeButtonProps {\n /** Visible action label, retained as the accessible name while loading. */\n children: string;\n /** Prevents activation and removes the button from the tab order. */\n disabled?: boolean;\n /** Shows the button's own skeleton and prevents repeat activation. */\n loading?: boolean;\n /** Reports a semantic activation, without a DOM event. */\n onAction?: () => void;\n ref?: Ref<HTMLButtonElement>;\n size?: ControlSize;\n type?: 'button' | 'submit';\n value?: string;\n variant?: ButtonVariant;\n}\n\n/**\n * Performs a semantic action with a visible label and an optional loading skeleton.\n *\n * @summary A closed, labelled action in four treatments and three sizes.\n */\nexport function Button({\n 'aria-controls': ariaControls,\n 'aria-describedby': ariaDescribedBy,\n 'aria-expanded': ariaExpanded,\n 'aria-haspopup': ariaHasPopup,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n children,\n disabled = false,\n form,\n id,\n loading = false,\n name,\n onAction,\n ref,\n size = 'md',\n type = 'button',\n value,\n variant = 'primary',\n}: Readonly<ButtonProps>): ReactElement {\n useBreezeContext();\n\n const className = [\n variants.base.button,\n variants.variant[variant],\n variants.size[size],\n disabled && variants.state.disabled,\n loading && variants.state.loading,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <AriaButton\n aria-controls={ariaControls}\n aria-describedby={ariaDescribedBy}\n aria-expanded={ariaExpanded}\n aria-haspopup={ariaHasPopup}\n aria-label={ariaLabel ?? children}\n aria-labelledby={ariaLabelledBy}\n className={className}\n form={form}\n id={id}\n isDisabled={disabled}\n isPending={loading}\n name={name}\n onPress={() => onAction?.()}\n ref={ref}\n render={(buttonProps) =>\n createElement('button', {\n ...buttonProps,\n // React Aria filters aria-busy; Breeze owns it on the native button.\n 'aria-busy': loading || undefined,\n // Keep the form's default submitter while pending so Enter cannot\n // bypass it through the browser's implicit-submission fallback.\n onClick: loading\n ? (event) => event.preventDefault()\n : buttonProps.onClick,\n type: type === 'submit' ? 'submit' : 'button',\n })\n }\n type={type}\n value={value}\n >\n <span\n className={[variants.base.label, loading && variants.state.loadingLabel]\n .filter(Boolean)\n .join(' ')}\n >\n {children}\n </span>\n {loading && (\n <>\n <LoadingStatus />\n <span\n aria-hidden=\"true\"\n className={[\n variants.base.skeleton,\n variants.compound.loading[variant],\n ].join(' ')}\n data-breeze-skeleton=\"\"\n />\n </>\n )}\n </AriaButton>\n );\n}\n","const enGB = {\n loading: 'Loading',\n};\n\nexport default enGB;\n","import type { ReactNode } from 'react';\nimport { useMemo } from 'react';\nimport { I18nProvider, useLocale } from 'react-aria-components/I18nProvider';\nimport { BreezeContext } from './BreezeContext';\nimport enGB from './en-GB';\n\n/** The required locale boundary for Breeze components. */\nexport interface BreezeProviderProps {\n children: ReactNode;\n /** BCP 47 locale for accessible interactions and future formatting components. */\n locale: string;\n /** Accessible messages translated into the provider locale; defaults to English. */\n messages?: typeof enGB;\n}\n\nfunction BreezeRoot({\n children,\n}: Readonly<Pick<BreezeProviderProps, 'children'>>) {\n const { direction, locale } = useLocale();\n\n return (\n <div data-breeze-root=\"\" dir={direction} lang={locale}>\n {children}\n </div>\n );\n}\n\n/**\n * Establishes the required locale and styling boundary.\n *\n * @summary Required locale and styling boundary for Breeze components.\n */\nexport function BreezeProvider({\n children,\n locale,\n messages,\n}: Readonly<BreezeProviderProps>) {\n const context = useMemo(\n () => ({\n locale,\n messageLocale: messages ? locale : 'en-GB',\n messages: messages ?? enGB,\n }),\n [locale, messages],\n );\n\n return (\n <I18nProvider locale={locale}>\n <BreezeContext value={context}>\n <BreezeRoot>{children}</BreezeRoot>\n </BreezeContext>\n </I18nProvider>\n );\n}\n"],"mappings":";;;;;;;AASA,IAAa,IAAgB,EAAyC,IAAI;AAE1E,SAAgB,IAAuC;CACrD,IAAM,IAAU,EAAW,CAAa;CAExC,IAAI,MAAY,MACd,MAAU,MACR,2DACF;CAGF,OAAO;AACT;;;ACdA,IAAM,IAAW;CACf,MAAM;EACJ,QACE;EACF,OAAO;EACP,UACE;CACJ;CACA,UAAU,EACR,SAAS;EACP,QAAQ;EACR,SAAS;EACT,OAAO;EACP,WAAW;CACb,EACF;CACA,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;CACN;CACA,OAAO;EACL,UAAU;EACV,SAAS;EACT,cAAc;EACd,eAAe;CACjB;CACA,SAAS;EACP,QACE;EACF,SACE;EACF,OACE;EACF,WACE;CACJ;AACF;AAGA,SAAS,IAA8B;CACrC,IAAM,IAAW,EAAkB,CAAkB,GAC/C,EAAE,kBAAe,gBAAa,EAAiB;CAErD,OACE,kBAAC,YAAD;EACE,cAAY,EAAS;EACrB,WAAW,EAAS,MAAM;EAC1B,IAAI,GAAU;EACd,MAAM;CACP,CAAA;AAEL;AA2CA,SAAgB,EAAO,EACrB,iBAAiB,GACjB,oBAAoB,GACpB,iBAAiB,GACjB,iBAAiB,GACjB,cAAc,GACd,mBAAmB,GACnB,aACA,cAAW,IACX,SACA,OACA,aAAU,IACV,SACA,aACA,QACA,UAAO,MACP,UAAO,UACP,UACA,aAAU,aAC4B;CACtC,EAAiB;CAEjB,IAAM,IAAY;EAChB,EAAS,KAAK;EACd,EAAS,QAAQ;EACjB,EAAS,KAAK;EACd,KAAY,EAAS,MAAM;EAC3B,KAAW,EAAS,MAAM;CAC5B,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;CAEX,OACE,kBAAC,GAAD;EACE,iBAAe;EACf,oBAAkB;EAClB,iBAAe;EACf,iBAAe;EACf,cAAY,KAAa;EACzB,mBAAiB;EACN;EACL;EACF;EACJ,YAAY;EACZ,WAAW;EACL;EACN,eAAe,IAAW;EACrB;EACL,SAAS,MACP,EAAc,UAAU;GACtB,GAAG;GAEH,aAAa,KAAW,KAAA;GAGxB,SAAS,KACJ,MAAU,EAAM,eAAe,IAChC,EAAY;GAChB,MAAM,MAAS,WAAW,WAAW;EACvC,CAAC;EAEG;EACC;YA7BT,CA+BE,kBAAC,QAAD;GACE,WAAW,CAAC,EAAS,KAAK,OAAO,KAAW,EAAS,MAAM,YAAY,CAAC,CACrE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;GAEV;EACG,CAAA,GACL,KACC,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD,CAAgB,CAAA,GAChB,kBAAC,QAAD;GACE,eAAY;GACZ,WAAW,CACT,EAAS,KAAK,UACd,EAAS,SAAS,QAAQ,EAC5B,CAAC,CAAC,KAAK,GAAG;GACV,wBAAqB;EACtB,CAAA,CACD,EAAA,CAAA,CAEM;;AAEhB;;;AC5LA,IAAM,IAAO,EACX,SAAS,UACX;;;ACaA,SAAS,EAAW,EAClB,eACkD;CAClD,IAAM,EAAE,cAAW,cAAW,EAAU;CAExC,OACE,kBAAC,OAAD;EAAK,oBAAiB;EAAG,KAAK;EAAW,MAAM;EAC5C;CACE,CAAA;AAET;AAOA,SAAgB,EAAe,EAC7B,aACA,WACA,eACgC;CAUhC,OACE,kBAAC,GAAD;EAAsB;YACpB,kBAAC,GAAD;GAAe,OAXH,SACP;IACL;IACA,eAAe,IAAW,IAAS;IACnC,UAAU,KAAY;GACxB,IACA,CAAC,GAAQ,CAAQ,CAKO;aACpB,kBAAC,GAAD,EAAa,YAAqB,CAAA;EACrB,CAAA;CACH,CAAA;AAElB"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/provider/BreezeContext.ts","../src/patterns/AppearanceControl/AppearanceControl.tsx","../src/primitives/Button/Button.tsx","../src/provider/en-GB.ts","../src/provider/BreezeProvider.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type enGB from './en-GB';\n\nexport type Appearance = 'automatic' | 'dark' | 'light';\nexport type ResolvedAppearance = Exclude<Appearance, 'automatic'>;\n\ninterface BreezeContextValue {\n appearance: Appearance;\n getMessageLocale: (message: keyof typeof enGB) => string;\n locale: string;\n messages: typeof enGB;\n resolvedAppearance: ResolvedAppearance;\n setAppearance: (appearance: Appearance) => void;\n}\n\nexport const BreezeContext = createContext<BreezeContextValue | null>(null);\n\nexport function useBreezeContext(): BreezeContextValue {\n const context = useContext(BreezeContext);\n\n if (context === null) {\n throw new Error(\n 'Breeze components must be rendered within BreezeProvider.',\n );\n }\n\n return context;\n}\n","import { ToggleButton } from 'react-aria-components/ToggleButton';\nimport { ToggleButtonGroup } from 'react-aria-components/ToggleButtonGroup';\nimport {\n type Appearance,\n useBreezeContext,\n} from '../../provider/BreezeContext';\n\nconst variants = {\n base: {\n control:\n 'breeze:flex breeze:items-center breeze:gap-breeze-2 breeze:font-breeze-sans',\n group: 'breeze:flex breeze:items-center breeze:gap-breeze-2',\n label: 'breeze:grow breeze:text-breeze-sm breeze:text-breeze-ink',\n option:\n 'breeze:inline-flex breeze:items-center breeze:min-block-breeze-sm breeze:ps-breeze-3 breeze:pe-breeze-3 breeze:border breeze:border-solid breeze:border-breeze-line-strong breeze:rounded-breeze-full breeze:bg-breeze-surface breeze:text-breeze-xs breeze:font-semibold breeze:text-breeze-ink breeze:cursor-pointer breeze:outline-offset-2 breeze:data-[hovered]:bg-breeze-sunken breeze:data-[focus-visible]:outline-2 breeze:data-[focus-visible]:outline-solid breeze:data-[focus-visible]:outline-breeze-brand breeze:any-pointer-coarse:min-block-breeze-tap breeze:any-pointer-coarse:min-inline-breeze-tap',\n },\n compound: {},\n size: {},\n state: {\n selected:\n 'breeze:data-[selected]:border-breeze-brand breeze:data-[selected]:bg-breeze-brand-soft breeze:data-[selected]:text-breeze-brand-text breeze:forced-colors:data-[selected]:outline-2 breeze:forced-colors:data-[selected]:outline-offset-2',\n },\n variant: {},\n} as const;\n\nconst appearanceOptions = [\n {\n message: 'appearanceLight',\n value: 'light',\n },\n {\n message: 'appearanceAutomatic',\n value: 'automatic',\n },\n {\n message: 'appearanceDark',\n value: 'dark',\n },\n] as const;\n\nfunction isAppearance(value: unknown): value is Appearance {\n return appearanceOptions.some((option) => option.value === value);\n}\n\n/**\n * Lets a person choose light, automatic or dark appearance.\n *\n * @summary A three-option appearance control backed by BreezeProvider.\n */\nfunction AppearanceControl() {\n const { appearance, getMessageLocale, messages, setAppearance } =\n useBreezeContext();\n\n return (\n <div className={variants.base.control}>\n <span\n className={variants.base.label}\n lang={getMessageLocale('appearance')}\n >\n {messages.appearance}\n </span>\n <ToggleButtonGroup\n aria-label={messages.appearance}\n className={variants.base.group}\n disallowEmptySelection\n lang={getMessageLocale('appearance')}\n onSelectionChange={(keys) => {\n const [selection] = keys;\n\n if (isAppearance(selection)) {\n setAppearance(selection);\n }\n }}\n selectedKeys={[appearance]}\n selectionMode=\"single\"\n >\n {appearanceOptions.map((option) => (\n <ToggleButton\n className={[variants.base.option, variants.state.selected].join(\n ' ',\n )}\n id={option.value}\n key={option.value}\n lang={getMessageLocale(option.message)}\n >\n {messages[option.message]}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n </div>\n );\n}\n\nexport default AppearanceControl;\n","import type { ButtonHTMLAttributes, Ref } from 'react';\nimport { createElement } from 'react';\nimport { Button as AriaButton } from 'react-aria-components/Button';\nimport { ProgressBarContext } from 'react-aria-components/ProgressBar';\nimport { useSlottedContext } from 'react-aria-components/slots';\nimport { useBreezeContext } from '../../provider/BreezeContext';\n\nconst variants = {\n base: {\n button:\n 'breeze:relative breeze:inline-grid breeze:items-center breeze:justify-center breeze:gap-breeze-2 breeze:border breeze:border-solid breeze:rounded-breeze-ctl breeze:font-breeze-sans breeze:text-breeze-sm breeze:leading-breeze-snug breeze:cursor-pointer breeze:select-none breeze:[text-align:center] breeze:outline-offset-2 breeze:data-[focus-visible]:outline-2 breeze:data-[focus-visible]:outline-solid breeze:data-[focus-visible]:outline-breeze-brand breeze:any-pointer-coarse:min-block-breeze-tap breeze:any-pointer-coarse:min-inline-breeze-tap',\n label: 'breeze:[grid-area:1/1]',\n skeleton:\n 'breeze:[grid-area:1/1] breeze:inline-size-full breeze:block-size-breeze-3 breeze:rounded-breeze-xs',\n },\n compound: {\n loading: {\n danger: 'breeze:bg-breeze-on-brand/35',\n primary: 'breeze:bg-breeze-on-brand/35',\n quiet: 'breeze:bg-breeze-line-strong',\n secondary: 'breeze:bg-breeze-line-strong',\n },\n },\n size: {\n lg: 'breeze:min-block-breeze-lg breeze:ps-breeze-5 breeze:pe-breeze-5 breeze:py-breeze-3',\n md: 'breeze:min-block-breeze-md breeze:ps-breeze-3 breeze:pe-breeze-3 breeze:py-breeze-2',\n sm: 'breeze:min-block-breeze-sm breeze:ps-breeze-3 breeze:pe-breeze-3 breeze:py-breeze-1',\n },\n state: {\n disabled: 'breeze:cursor-not-allowed breeze:opacity-50',\n loading: 'breeze:cursor-wait',\n loadingLabel: 'breeze:opacity-0',\n loadingStatus: 'breeze:sr-only',\n },\n variant: {\n danger:\n 'breeze:border-transparent breeze:bg-breeze-danger-fill breeze:text-breeze-on-brand breeze:data-[hovered]:bg-breeze-danger-hover breeze:data-[pressed]:bg-breeze-danger-hover',\n primary:\n 'breeze:border-transparent breeze:bg-breeze-brand breeze:text-breeze-on-brand breeze:data-[hovered]:bg-breeze-brand-hover breeze:data-[pressed]:bg-breeze-brand-hover',\n quiet:\n 'breeze:border-transparent breeze:bg-transparent breeze:text-breeze-brand-text breeze:data-[hovered]:bg-breeze-brand-soft breeze:data-[pressed]:bg-breeze-brand-soft',\n secondary:\n 'breeze:border-breeze-line-strong breeze:bg-breeze-surface breeze:text-breeze-ink breeze:data-[hovered]:bg-breeze-sunken breeze:data-[pressed]:bg-breeze-sunken',\n },\n} as const;\n\n/** Connect the pending announcement to a phrasing element inside the button. */\nfunction LoadingStatus() {\n const progress = useSlottedContext(ProgressBarContext);\n const { getMessageLocale, messages } = useBreezeContext();\n\n return (\n <progress\n aria-label={messages.loading}\n className={variants.state.loadingStatus}\n id={progress?.id}\n lang={getMessageLocale('loading')}\n />\n );\n}\n\n/** Button-specific visual treatments. */\nexport type ButtonVariant = keyof typeof variants.variant;\n\n/** Shared control sizes: 34, 38 and 52px, with a 44px coarse-pointer floor. */\nexport type ControlSize = 'sm' | 'md' | 'lg';\n\n/** An intentional native subset; styling, slots and DOM event callbacks are closed. */\ntype NativeButtonProps = Pick<\n ButtonHTMLAttributes<HTMLButtonElement>,\n | 'aria-controls'\n | 'aria-describedby'\n | 'aria-expanded'\n | 'aria-haspopup'\n | 'aria-label'\n | 'aria-labelledby'\n | 'form'\n | 'id'\n | 'name'\n>;\n\nexport interface ButtonProps extends NativeButtonProps {\n /** Visible action label, retained as the accessible name while loading. */\n children: string;\n /** Prevents activation and removes the button from the tab order. */\n disabled?: boolean;\n /** Shows the button's own skeleton and prevents repeat activation. */\n loading?: boolean;\n /** Reports a semantic activation, without a DOM event. */\n onAction?: () => void;\n ref?: Ref<HTMLButtonElement>;\n size?: ControlSize;\n type?: 'button' | 'submit';\n value?: string;\n variant?: ButtonVariant;\n}\n\n/**\n * Performs a semantic action with a visible label and an optional loading skeleton.\n *\n * @summary A closed, labelled action in four treatments and three sizes.\n */\nexport function Button({\n 'aria-controls': ariaControls,\n 'aria-describedby': ariaDescribedBy,\n 'aria-expanded': ariaExpanded,\n 'aria-haspopup': ariaHasPopup,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n children,\n disabled = false,\n form,\n id,\n loading = false,\n name,\n onAction,\n ref,\n size = 'md',\n type = 'button',\n value,\n variant = 'primary',\n}: Readonly<ButtonProps>) {\n useBreezeContext();\n\n const className = [\n variants.base.button,\n variants.variant[variant],\n variants.size[size],\n disabled && variants.state.disabled,\n loading && variants.state.loading,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <AriaButton\n aria-controls={ariaControls}\n aria-describedby={ariaDescribedBy}\n aria-expanded={ariaExpanded}\n aria-haspopup={ariaHasPopup}\n aria-label={ariaLabel ?? children}\n aria-labelledby={ariaLabelledBy}\n className={className}\n form={form}\n id={id}\n isDisabled={disabled}\n isPending={loading}\n name={name}\n onPress={() => onAction?.()}\n ref={ref}\n render={(buttonProps) =>\n createElement('button', {\n ...buttonProps,\n // React Aria filters aria-busy; Breeze owns it on the native button.\n 'aria-busy': loading || undefined,\n // Keep the form's default submitter while pending so Enter cannot\n // bypass it through the browser's implicit-submission fallback.\n onClick: loading\n ? (event) => event.preventDefault()\n : buttonProps.onClick,\n type: type === 'submit' ? 'submit' : 'button',\n })\n }\n type={type}\n value={value}\n >\n <span\n className={[variants.base.label, loading && variants.state.loadingLabel]\n .filter(Boolean)\n .join(' ')}\n >\n {children}\n </span>\n {loading && (\n <>\n <LoadingStatus />\n <span\n aria-hidden=\"true\"\n className={[\n variants.base.skeleton,\n variants.compound.loading[variant],\n ].join(' ')}\n data-breeze-skeleton=\"\"\n />\n </>\n )}\n </AriaButton>\n );\n}\n","const enGB = {\n appearance: 'Appearance',\n appearanceAutomatic: 'Auto',\n appearanceDark: 'Dark',\n appearanceLight: 'Light',\n loading: 'Loading',\n};\n\nexport default enGB;\n","import type { ReactNode } from 'react';\nimport {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useState,\n} from 'react';\nimport { I18nProvider, useLocale } from 'react-aria-components/I18nProvider';\nimport { type Appearance, BreezeContext } from './BreezeContext';\nimport enGB from './en-GB';\n\ninterface BreezeProviderBaseProps {\n children: ReactNode;\n /** BCP 47 locale for accessible interactions and future formatting components. */\n locale: string;\n /** Accessible messages translated into the provider locale; defaults to English. */\n messages?: Partial<typeof enGB>;\n}\n\ninterface ControlledAppearanceProps {\n /** The application-owned appearance choice. */\n appearance: Appearance;\n defaultAppearance?: never;\n /** Reports a semantic appearance choice so the application can persist it. */\n onAppearanceChange: (appearance: Appearance) => void;\n}\n\ninterface UncontrolledAppearanceProps {\n appearance?: never;\n /** The initial appearance choice; defaults to automatic. */\n defaultAppearance?: Appearance;\n /** Reports a semantic appearance choice without persisting it. */\n onAppearanceChange?: (appearance: Appearance) => void;\n}\n\n/** The required locale and appearance boundary for Breeze components. */\nexport type BreezeProviderProps = BreezeProviderBaseProps &\n (ControlledAppearanceProps | UncontrolledAppearanceProps);\n\nfunction resolveAppearance(appearance: Appearance, prefersDark: boolean) {\n if (appearance === 'automatic') {\n return prefersDark ? 'dark' : 'light';\n }\n\n return appearance;\n}\n\nfunction BreezeRoot({\n children,\n}: Readonly<Pick<BreezeProviderProps, 'children'>>) {\n const { direction, locale } = useLocale();\n\n return (\n <div data-breeze-root=\"\" dir={direction} lang={locale}>\n {children}\n </div>\n );\n}\n\n/**\n * Establishes the required locale and styling boundary.\n *\n * @summary Required locale and styling boundary for Breeze components.\n */\nexport function BreezeProvider({\n appearance: controlledAppearance,\n children,\n defaultAppearance = 'automatic',\n locale,\n messages,\n onAppearanceChange,\n}: Readonly<BreezeProviderProps>) {\n const [preferredColorSchemeQuery] = useState(() =>\n typeof window === 'undefined' || !window.matchMedia\n ? null\n : window.matchMedia('(prefers-color-scheme: dark)'),\n );\n const [prefersDark, setPrefersDark] = useState(\n () => preferredColorSchemeQuery?.matches ?? false,\n );\n const [uncontrolledAppearance, setUncontrolledAppearance] =\n useState(defaultAppearance);\n const appearance = controlledAppearance ?? uncontrolledAppearance;\n const resolvedAppearance = resolveAppearance(appearance, prefersDark);\n\n useEffect(() => {\n if (!preferredColorSchemeQuery) {\n return undefined;\n }\n\n setPrefersDark(preferredColorSchemeQuery.matches);\n\n const handleChange = (event: MediaQueryListEvent) => {\n setPrefersDark(event.matches);\n };\n\n preferredColorSchemeQuery.addEventListener('change', handleChange);\n\n return () =>\n preferredColorSchemeQuery.removeEventListener('change', handleChange);\n }, [preferredColorSchemeQuery]);\n\n useLayoutEffect(() => {\n const { documentElement } = document;\n const previousTheme = documentElement.dataset.theme;\n const previousColorScheme = documentElement.style.colorScheme;\n\n documentElement.dataset.theme = resolvedAppearance;\n documentElement.style.colorScheme = resolvedAppearance;\n\n return () => {\n if (previousTheme === undefined) {\n delete documentElement.dataset.theme;\n } else {\n documentElement.dataset.theme = previousTheme;\n }\n\n documentElement.style.colorScheme = previousColorScheme;\n };\n }, [resolvedAppearance]);\n\n const setAppearance = useCallback(\n (nextAppearance: Appearance) => {\n if (controlledAppearance === undefined) {\n setUncontrolledAppearance(nextAppearance);\n }\n\n onAppearanceChange?.(nextAppearance);\n },\n [controlledAppearance, onAppearanceChange],\n );\n const getMessageLocale = useCallback(\n (message: keyof typeof enGB) =>\n messages?.[message] === undefined ? 'en-GB' : locale,\n [locale, messages],\n );\n\n const context = useMemo(\n () => ({\n appearance,\n getMessageLocale,\n locale,\n messages: {\n appearance: messages?.appearance ?? enGB.appearance,\n appearanceAutomatic:\n messages?.appearanceAutomatic ?? enGB.appearanceAutomatic,\n appearanceDark: messages?.appearanceDark ?? enGB.appearanceDark,\n appearanceLight: messages?.appearanceLight ?? enGB.appearanceLight,\n loading: messages?.loading ?? enGB.loading,\n },\n resolvedAppearance,\n setAppearance,\n }),\n [\n appearance,\n getMessageLocale,\n locale,\n messages,\n resolvedAppearance,\n setAppearance,\n ],\n );\n\n return (\n <I18nProvider locale={locale}>\n <BreezeContext value={context}>\n <BreezeRoot>{children}</BreezeRoot>\n </BreezeContext>\n </I18nProvider>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lets a person choose light, automatic or dark appearance.
|
|
3
|
+
*
|
|
4
|
+
* @summary A three-option appearance control backed by BreezeProvider.
|
|
5
|
+
*/
|
|
6
|
+
declare function AppearanceControl(): import("react").JSX.Element;
|
|
7
|
+
export default AppearanceControl;
|
|
8
|
+
//# sourceMappingURL=AppearanceControl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppearanceControl.d.ts","sourceRoot":"","sources":["../../../src/patterns/AppearanceControl/AppearanceControl.tsx"],"names":[],"mappings":"AA4CA;;;;GAIG;AACH,iBAAS,iBAAiB,gCA0CzB;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ButtonHTMLAttributes,
|
|
1
|
+
import type { ButtonHTMLAttributes, Ref } from 'react';
|
|
2
2
|
declare const variants: {
|
|
3
3
|
readonly base: {
|
|
4
4
|
readonly button: "breeze:relative breeze:inline-grid breeze:items-center breeze:justify-center breeze:gap-breeze-2 breeze:border breeze:border-solid breeze:rounded-breeze-ctl breeze:font-breeze-sans breeze:text-breeze-sm breeze:leading-breeze-snug breeze:cursor-pointer breeze:select-none breeze:[text-align:center] breeze:outline-offset-2 breeze:data-[focus-visible]:outline-2 breeze:data-[focus-visible]:outline-solid breeze:data-[focus-visible]:outline-breeze-brand breeze:any-pointer-coarse:min-block-breeze-tap breeze:any-pointer-coarse:min-inline-breeze-tap";
|
|
@@ -57,6 +57,6 @@ export interface ButtonProps extends NativeButtonProps {
|
|
|
57
57
|
*
|
|
58
58
|
* @summary A closed, labelled action in four treatments and three sizes.
|
|
59
59
|
*/
|
|
60
|
-
export declare function Button({ 'aria-controls': ariaControls, 'aria-describedby': ariaDescribedBy, 'aria-expanded': ariaExpanded, 'aria-haspopup': ariaHasPopup, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, children, disabled, form, id, loading, name, onAction, ref, size, type, value, variant, }: Readonly<ButtonProps>):
|
|
60
|
+
export declare function Button({ 'aria-controls': ariaControls, 'aria-describedby': ariaDescribedBy, 'aria-expanded': ariaExpanded, 'aria-haspopup': ariaHasPopup, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, children, disabled, form, id, loading, name, onAction, ref, size, type, value, variant, }: Readonly<ButtonProps>): import("react").JSX.Element;
|
|
61
61
|
export {};
|
|
62
62
|
//# sourceMappingURL=Button.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/primitives/Button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/primitives/Button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAOvD,QAAA,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCJ,CAAC;AAiBX,yCAAyC;AACzC,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,QAAQ,CAAC,OAAO,CAAC;AAE1D,+EAA+E;AAC/E,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C,uFAAuF;AACvF,KAAK,iBAAiB,GAAG,IAAI,CAC3B,oBAAoB,CAAC,iBAAiB,CAAC,EACrC,eAAe,GACf,kBAAkB,GAClB,eAAe,GACf,eAAe,GACf,YAAY,GACZ,iBAAiB,GACjB,MAAM,GACN,IAAI,GACJ,MAAM,CACT,CAAC;AAEF,MAAM,WAAW,WAAY,SAAQ,iBAAiB;IACpD,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,GAAG,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,EACrB,eAAe,EAAE,YAAY,EAC7B,kBAAkB,EAAE,eAAe,EACnC,eAAe,EAAE,YAAY,EAC7B,eAAe,EAAE,YAAY,EAC7B,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,EACjC,QAAQ,EACR,QAAgB,EAChB,IAAI,EACJ,EAAE,EACF,OAAe,EACf,IAAI,EACJ,QAAQ,EACR,GAAG,EACH,IAAW,EACX,IAAe,EACf,KAAK,EACL,OAAmB,GACpB,EAAE,QAAQ,CAAC,WAAW,CAAC,+BAmEvB"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import type enGB from './en-GB';
|
|
2
|
+
export type Appearance = 'automatic' | 'dark' | 'light';
|
|
3
|
+
export type ResolvedAppearance = Exclude<Appearance, 'automatic'>;
|
|
2
4
|
interface BreezeContextValue {
|
|
5
|
+
appearance: Appearance;
|
|
6
|
+
getMessageLocale: (message: keyof typeof enGB) => string;
|
|
3
7
|
locale: string;
|
|
4
|
-
messageLocale: string;
|
|
5
8
|
messages: typeof enGB;
|
|
9
|
+
resolvedAppearance: ResolvedAppearance;
|
|
10
|
+
setAppearance: (appearance: Appearance) => void;
|
|
6
11
|
}
|
|
7
12
|
export declare const BreezeContext: import("react").Context<BreezeContextValue | null>;
|
|
8
13
|
export declare function useBreezeContext(): BreezeContextValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BreezeContext.d.ts","sourceRoot":"","sources":["../../src/provider/BreezeContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAEhC,UAAU,kBAAkB;IAC1B,
|
|
1
|
+
{"version":3,"file":"BreezeContext.d.ts","sourceRoot":"","sources":["../../src/provider/BreezeContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAEhC,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AACxD,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAElE,UAAU,kBAAkB;IAC1B,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,OAAO,IAAI,KAAK,MAAM,CAAC;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,IAAI,CAAC;IACtB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,aAAa,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;CACjD;AAED,eAAO,MAAM,aAAa,oDAAiD,CAAC;AAE5E,wBAAgB,gBAAgB,IAAI,kBAAkB,CAUrD"}
|
|
@@ -1,17 +1,34 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
|
+
import { type Appearance } from './BreezeContext';
|
|
2
3
|
import enGB from './en-GB';
|
|
3
|
-
|
|
4
|
-
export interface BreezeProviderProps {
|
|
4
|
+
interface BreezeProviderBaseProps {
|
|
5
5
|
children: ReactNode;
|
|
6
6
|
/** BCP 47 locale for accessible interactions and future formatting components. */
|
|
7
7
|
locale: string;
|
|
8
8
|
/** Accessible messages translated into the provider locale; defaults to English. */
|
|
9
|
-
messages?: typeof enGB
|
|
9
|
+
messages?: Partial<typeof enGB>;
|
|
10
10
|
}
|
|
11
|
+
interface ControlledAppearanceProps {
|
|
12
|
+
/** The application-owned appearance choice. */
|
|
13
|
+
appearance: Appearance;
|
|
14
|
+
defaultAppearance?: never;
|
|
15
|
+
/** Reports a semantic appearance choice so the application can persist it. */
|
|
16
|
+
onAppearanceChange: (appearance: Appearance) => void;
|
|
17
|
+
}
|
|
18
|
+
interface UncontrolledAppearanceProps {
|
|
19
|
+
appearance?: never;
|
|
20
|
+
/** The initial appearance choice; defaults to automatic. */
|
|
21
|
+
defaultAppearance?: Appearance;
|
|
22
|
+
/** Reports a semantic appearance choice without persisting it. */
|
|
23
|
+
onAppearanceChange?: (appearance: Appearance) => void;
|
|
24
|
+
}
|
|
25
|
+
/** The required locale and appearance boundary for Breeze components. */
|
|
26
|
+
export type BreezeProviderProps = BreezeProviderBaseProps & (ControlledAppearanceProps | UncontrolledAppearanceProps);
|
|
11
27
|
/**
|
|
12
28
|
* Establishes the required locale and styling boundary.
|
|
13
29
|
*
|
|
14
30
|
* @summary Required locale and styling boundary for Breeze components.
|
|
15
31
|
*/
|
|
16
|
-
export declare function BreezeProvider({ children, locale, messages, }: Readonly<BreezeProviderProps>): import("react").JSX.Element;
|
|
32
|
+
export declare function BreezeProvider({ appearance: controlledAppearance, children, defaultAppearance, locale, messages, onAppearanceChange, }: Readonly<BreezeProviderProps>): import("react").JSX.Element;
|
|
33
|
+
export {};
|
|
17
34
|
//# sourceMappingURL=BreezeProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BreezeProvider.d.ts","sourceRoot":"","sources":["../../src/provider/BreezeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"BreezeProvider.d.ts","sourceRoot":"","sources":["../../src/provider/BreezeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AASvC,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,iBAAiB,CAAC;AACjE,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,SAAS,CAAC;IACpB,kFAAkF;IAClF,MAAM,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,QAAQ,CAAC,EAAE,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;CACjC;AAED,UAAU,yBAAyB;IACjC,+CAA+C;IAC/C,UAAU,EAAE,UAAU,CAAC;IACvB,iBAAiB,CAAC,EAAE,KAAK,CAAC;IAC1B,8EAA8E;IAC9E,kBAAkB,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;CACtD;AAED,UAAU,2BAA2B;IACnC,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,4DAA4D;IAC5D,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B,kEAAkE;IAClE,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;CACvD;AAED,yEAAyE;AACzE,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,GACvD,CAAC,yBAAyB,GAAG,2BAA2B,CAAC,CAAC;AAsB5D;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAC7B,UAAU,EAAE,oBAAoB,EAChC,QAAQ,EACR,iBAA+B,EAC/B,MAAM,EACN,QAAQ,EACR,kBAAkB,GACnB,EAAE,QAAQ,CAAC,mBAAmB,CAAC,+BAmG/B"}
|
package/lib/provider/en-GB.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en-GB.d.ts","sourceRoot":"","sources":["../../src/provider/en-GB.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,IAAI
|
|
1
|
+
{"version":3,"file":"en-GB.d.ts","sourceRoot":"","sources":["../../src/provider/en-GB.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,IAAI;;;;;;CAMT,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
package/lib/styles.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-leading:initial;--tw-outline-style:solid}}}@layer theme;@layer base{:where([data-breeze-root]),:where([data-breeze-root]) *,:where([data-breeze-root]) :before,:where([data-breeze-root]) :after{box-sizing:border-box}:where([data-breeze-root]){background:var(--breeze-color-breeze-canvas);min-inline-size:0;color:var(--breeze-color-breeze-ink);font-family:var(--breeze-font-breeze-sans);font-size:var(--breeze-text-breeze-sm);font-synthesis:none;line-height:var(--breeze-leading-breeze-snug)}:where([data-breeze-root]) button{font:inherit}:where([data-breeze-root]) [hidden]{display:none!important}}@layer components;@layer utilities{:where([data-breeze-root]) .breeze\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:where([data-breeze-root]) .breeze\:relative{position:relative}:where([data-breeze-root]) .breeze\:inline-grid{display:inline-grid}:where([data-breeze-root]) .breeze\:cursor-not-allowed{cursor:not-allowed}:where([data-breeze-root]) .breeze\:cursor-pointer{cursor:pointer}:where([data-breeze-root]) .breeze\:cursor-wait{cursor:wait}:where([data-breeze-root]) .breeze\:items-center{align-items:center}:where([data-breeze-root]) .breeze\:justify-center{justify-content:center}:where([data-breeze-root]) .breeze\:gap-breeze-2{gap:var(--breeze-spacing-breeze-2)}:where([data-breeze-root]) .breeze\:rounded-breeze-ctl{border-radius:var(--breeze-radius-breeze-ctl)}:where([data-breeze-root]) .breeze\:rounded-breeze-xs{border-radius:var(--breeze-radius-breeze-xs)}:where([data-breeze-root]) .breeze\:border{border-style:var(--tw-border-style);border-width:1px}:where([data-breeze-root]) .breeze\:border-solid{--tw-border-style:solid;border-style:solid}:where([data-breeze-root]) .breeze\:border-breeze-line-strong{border-color:var(--breeze-color-breeze-line-strong)}:where([data-breeze-root]) .breeze\:border-transparent{border-color:#0000}:where([data-breeze-root]) .breeze\:bg-breeze-brand{background-color:var(--breeze-color-breeze-brand)}:where([data-breeze-root]) .breeze\:bg-breeze-danger-fill{background-color:var(--breeze-color-breeze-danger-fill)}:where([data-breeze-root]) .breeze\:bg-breeze-line-strong{background-color:var(--breeze-color-breeze-line-strong)}:where([data-breeze-root]) .breeze\:bg-breeze-on-brand\/35{background-color:var(--breeze-color-breeze-on-brand)}@supports (color:color-mix(in lab, red, red)){:where([data-breeze-root]) .breeze\:bg-breeze-on-brand\/35{background-color:color-mix(in oklab, var(--breeze-color-breeze-on-brand) 35%, transparent)}}:where([data-breeze-root]) .breeze\:bg-breeze-surface{background-color:var(--breeze-color-breeze-surface)}:where([data-breeze-root]) .breeze\:bg-transparent{background-color:#0000}:where([data-breeze-root]) .breeze\:py-breeze-1{padding-block:var(--breeze-spacing-breeze-1)}:where([data-breeze-root]) .breeze\:py-breeze-2{padding-block:var(--breeze-spacing-breeze-2)}:where([data-breeze-root]) .breeze\:py-breeze-3{padding-block:var(--breeze-spacing-breeze-3)}:where([data-breeze-root]) .breeze\:ps-breeze-3{padding-inline-start:var(--breeze-spacing-breeze-3)}:where([data-breeze-root]) .breeze\:ps-breeze-5{padding-inline-start:var(--breeze-spacing-breeze-5)}:where([data-breeze-root]) .breeze\:pe-breeze-3{padding-inline-end:var(--breeze-spacing-breeze-3)}:where([data-breeze-root]) .breeze\:pe-breeze-5{padding-inline-end:var(--breeze-spacing-breeze-5)}:where([data-breeze-root]) .breeze\:\[text-align\:center\]{text-align:center}:where([data-breeze-root]) .breeze\:font-breeze-sans{font-family:var(--breeze-font-breeze-sans)}:where([data-breeze-root]) .breeze\:text-breeze-sm{font-size:var(--breeze-text-breeze-sm)}:where([data-breeze-root]) .breeze\:leading-breeze-snug{--tw-leading:var(--breeze-leading-breeze-snug);line-height:var(--breeze-leading-breeze-snug)}:where([data-breeze-root]) .breeze\:text-breeze-brand-text{color:var(--breeze-color-breeze-brand-text)}:where([data-breeze-root]) .breeze\:text-breeze-ink{color:var(--breeze-color-breeze-ink)}:where([data-breeze-root]) .breeze\:text-breeze-on-brand{color:var(--breeze-color-breeze-on-brand)}:where([data-breeze-root]) .breeze\:opacity-0{opacity:0}:where([data-breeze-root]) .breeze\:opacity-50{opacity:.5}:where([data-breeze-root]) .breeze\:outline-offset-2{outline-offset:2px}:where([data-breeze-root]) .breeze\:select-none{-webkit-user-select:none;user-select:none}:where([data-breeze-root]) .breeze\:\[grid-area\:1\/1\]{grid-area:1/1}:where([data-breeze-root]) .breeze\:block-size-breeze-3{block-size:var(--breeze-spacing-breeze-3)}:where([data-breeze-root]) .breeze\:inline-size-full{inline-size:100%}:where([data-breeze-root]) .breeze\:min-block-breeze-lg{min-block-size:var(--breeze-spacing-breeze-lg);min-block-size:var(--breeze-spacing-breeze-lg)}:where([data-breeze-root]) .breeze\:min-block-breeze-md{min-block-size:var(--breeze-spacing-breeze-md);min-block-size:var(--breeze-spacing-breeze-md)}:where([data-breeze-root]) .breeze\:min-block-breeze-sm{min-block-size:var(--breeze-spacing-breeze-sm);min-block-size:var(--breeze-spacing-breeze-sm)}:where([data-breeze-root]) .breeze\:data-\[focus-visible\]\:outline-2[data-focus-visible]{outline-style:var(--tw-outline-style);outline-width:2px}:where([data-breeze-root]) .breeze\:data-\[focus-visible\]\:outline-breeze-brand[data-focus-visible]{outline-color:var(--breeze-color-breeze-brand)}:where([data-breeze-root]) .breeze\:data-\[focus-visible\]\:outline-solid[data-focus-visible]{--tw-outline-style:solid;outline-style:solid}:where([data-breeze-root]) .breeze\:data-\[hovered\]\:bg-breeze-brand-hover[data-hovered]{background-color:var(--breeze-color-breeze-brand-hover)}:where([data-breeze-root]) .breeze\:data-\[hovered\]\:bg-breeze-brand-soft[data-hovered]{background-color:var(--breeze-color-breeze-brand-soft)}:where([data-breeze-root]) .breeze\:data-\[hovered\]\:bg-breeze-danger-hover[data-hovered]{background-color:var(--breeze-color-breeze-danger-hover)}:where([data-breeze-root]) .breeze\:data-\[hovered\]\:bg-breeze-sunken[data-hovered]{background-color:var(--breeze-color-breeze-sunken)}:where([data-breeze-root]) .breeze\:data-\[pressed\]\:bg-breeze-brand-hover[data-pressed]{background-color:var(--breeze-color-breeze-brand-hover)}:where([data-breeze-root]) .breeze\:data-\[pressed\]\:bg-breeze-brand-soft[data-pressed]{background-color:var(--breeze-color-breeze-brand-soft)}:where([data-breeze-root]) .breeze\:data-\[pressed\]\:bg-breeze-danger-hover[data-pressed]{background-color:var(--breeze-color-breeze-danger-hover)}:where([data-breeze-root]) .breeze\:data-\[pressed\]\:bg-breeze-sunken[data-pressed]{background-color:var(--breeze-color-breeze-sunken)}@media (any-pointer:coarse){:where([data-breeze-root]) .breeze\:any-pointer-coarse\:min-block-breeze-tap{min-block-size:var(--breeze-spacing-breeze-tap);min-block-size:var(--breeze-spacing-breeze-tap)}:where([data-breeze-root]) .breeze\:any-pointer-coarse\:min-inline-breeze-tap{min-inline-size:var(--breeze-spacing-breeze-tap);min-inline-size:var(--breeze-spacing-breeze-tap)}}}@font-face{font-family:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./assets/public-sans-latin-wght-normal-DdeTHZLK.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root,:host{--breeze-breakpoint-breeze-sm:42.5625rem;--breeze-breakpoint-breeze-md:56.3125rem;--breeze-breakpoint-breeze-lg:73.8125rem;--breeze-font-breeze-sans:"Public Sans Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", helvetica, arial, sans-serif;--breeze-color-breeze-brand:#007fa8;--breeze-color-breeze-brand-hover:#007aa3;--breeze-color-breeze-brand-text:#006884;--breeze-color-breeze-brand-soft:#e3f2f8;--breeze-color-breeze-on-brand:#fff;--breeze-color-breeze-canvas:#f6f9fc;--breeze-color-breeze-surface:#fff;--breeze-color-breeze-raised:#f6f9fc;--breeze-color-breeze-sunken:#eff3f8;--breeze-color-breeze-line:#e3e8ee;--breeze-color-breeze-line-strong:#cfd7e0;--breeze-color-breeze-ink:#161616;--breeze-color-breeze-ink-2:#4a4f57;--breeze-color-breeze-ink-3:#66707c;--breeze-color-breeze-pos:#127a4e;--breeze-color-breeze-pos-soft:#e4f1ea;--breeze-color-breeze-warn:#8a5a0b;--breeze-color-breeze-warn-soft:#fdf3dc;--breeze-color-breeze-danger:#b4231d;--breeze-text-breeze-2xs:11px;--breeze-text-breeze-xs:12px;--breeze-text-breeze-sm:13px;--breeze-text-breeze-base:14px;--breeze-text-breeze-md:15px;--breeze-text-breeze-lg:17px;--breeze-text-breeze-xl:20px;--breeze-text-breeze-2xl:22px;--breeze-text-breeze-3xl:24px;--breeze-text-breeze-4xl:26px;--breeze-spacing-breeze-md:38px;--breeze-spacing-breeze-lg:52px;--breeze-spacing-breeze-sm:34px;--breeze-spacing-breeze-tap:44px;--breeze-spacing-breeze-row:64px;--breeze-spacing-breeze-sheet:610px;--breeze-spacing-breeze-card:400px;--breeze-radius-breeze-panel:8px;--breeze-radius-breeze-ctl:6px;--breeze-radius-breeze-chip:3px;--breeze-leading-breeze-tight:1.1;--breeze-leading-breeze-snug:1.45;--breeze-leading-breeze-normal:1.5;--breeze-tracking-breeze-tight:-.008em;--breeze-tracking-breeze-tighter:-.012em;--breeze-tracking-breeze-tightest:-.018em;--breeze-tracking-breeze-caps:.06em;--breeze-tracking-breeze-wide:.05em;--breeze-aspect-breeze-a4:1/1.414;--breeze-aspect-breeze-photo:3/4;--breeze-container-breeze-page:1500px;--breeze-container-breeze-read:54ch;--breeze-container-breeze-prose:52ch;--breeze-color-breeze-scrim:#0c121f;--breeze-radius-breeze-xs:2px;--breeze-radius-breeze-sm:4px;--breeze-color-breeze-danger-fill:#b4231d;--breeze-color-breeze-danger-hover:#981e19;--breeze-radius-breeze-full:9999px;--breeze-spacing-breeze-1:4px;--breeze-spacing-breeze-2:8px;--breeze-spacing-breeze-3:12px;--breeze-spacing-breeze-4:16px;--breeze-spacing-breeze-5:20px;--breeze-spacing-breeze-6:24px;--breeze-spacing-breeze-8:32px}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--breeze-shadow-panel:0 1px 1px #16161608, 0 2px 5px #1616160a;--breeze-shadow-overlay:0 1px 2px #1616160f, 0 8px 24px -10px #16161640}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--breeze-color-breeze-brand-text:#33aacf;--breeze-color-breeze-brand-soft:#12313b;--breeze-color-breeze-canvas:#161616;--breeze-color-breeze-surface:#1f1f1f;--breeze-color-breeze-raised:#262626;--breeze-color-breeze-sunken:#262626;--breeze-color-breeze-line:#303030;--breeze-color-breeze-line-strong:#3d3d3d;--breeze-color-breeze-ink:#f2f2f2;--breeze-color-breeze-ink-2:#b4b4b4;--breeze-color-breeze-ink-3:#949494;--breeze-color-breeze-pos:#3fbf8b;--breeze-color-breeze-pos-soft:#16291f;--breeze-color-breeze-warn:#e0b341;--breeze-color-breeze-warn-soft:#2a2314;--breeze-color-breeze-danger:#f1736a;--breeze-shadow-panel:0 1px 1px #0006;--breeze-shadow-overlay:0 1px 2px #00000080, 0 8px 24px -10px #000000b3}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--breeze-color-breeze-brand-text:#33aacf;--breeze-color-breeze-brand-soft:#12313b;--breeze-color-breeze-canvas:#161616;--breeze-color-breeze-surface:#1f1f1f;--breeze-color-breeze-raised:#262626;--breeze-color-breeze-sunken:#262626;--breeze-color-breeze-line:#303030;--breeze-color-breeze-line-strong:#3d3d3d;--breeze-color-breeze-ink:#f2f2f2;--breeze-color-breeze-ink-2:#b4b4b4;--breeze-color-breeze-ink-3:#949494;--breeze-color-breeze-pos:#3fbf8b;--breeze-color-breeze-pos-soft:#16291f;--breeze-color-breeze-warn:#e0b341;--breeze-color-breeze-warn-soft:#2a2314;--breeze-color-breeze-danger:#f1736a;--breeze-shadow-panel:0 1px 1px #0006;--breeze-shadow-overlay:0 1px 2px #00000080, 0 8px 24px -10px #000000b3}@media (prefers-reduced-motion:reduce){:where([data-breeze-root]) *,:where([data-breeze-root]) :before,:where([data-breeze-root]) :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (forced-colors:active){:where([data-breeze-root]) button{border-color:buttontext}:where([data-breeze-root]) [data-focus-visible]{outline-color:highlight}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-leading:initial;--tw-outline-style:solid}}}@layer theme;@layer base{:where([data-breeze-root]),:where([data-breeze-root]) *,:where([data-breeze-root]) :before,:where([data-breeze-root]) :after{box-sizing:border-box}:where([data-breeze-root]){background:var(--breeze-color-breeze-canvas);min-inline-size:0;color:var(--breeze-color-breeze-ink);font-family:var(--breeze-font-breeze-sans);font-size:var(--breeze-text-breeze-sm);font-synthesis:none;line-height:var(--breeze-leading-breeze-snug)}:where([data-breeze-root]) button{font:inherit}:where([data-breeze-root]) [hidden]{display:none!important}}@layer components;@layer utilities{:where([data-breeze-root]) .breeze\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:where([data-breeze-root]) .breeze\:relative{position:relative}:where([data-breeze-root]) .breeze\:flex{display:flex}:where([data-breeze-root]) .breeze\:inline-flex{display:inline-flex}:where([data-breeze-root]) .breeze\:inline-grid{display:inline-grid}:where([data-breeze-root]) .breeze\:grow{flex-grow:1}:where([data-breeze-root]) .breeze\:cursor-not-allowed{cursor:not-allowed}:where([data-breeze-root]) .breeze\:cursor-pointer{cursor:pointer}:where([data-breeze-root]) .breeze\:cursor-wait{cursor:wait}:where([data-breeze-root]) .breeze\:items-center{align-items:center}:where([data-breeze-root]) .breeze\:justify-center{justify-content:center}:where([data-breeze-root]) .breeze\:gap-breeze-2{gap:var(--breeze-spacing-breeze-2)}:where([data-breeze-root]) .breeze\:rounded-breeze-ctl{border-radius:var(--breeze-radius-breeze-ctl)}:where([data-breeze-root]) .breeze\:rounded-breeze-full{border-radius:var(--breeze-radius-breeze-full)}:where([data-breeze-root]) .breeze\:rounded-breeze-xs{border-radius:var(--breeze-radius-breeze-xs)}:where([data-breeze-root]) .breeze\:border{border-style:var(--tw-border-style);border-width:1px}:where([data-breeze-root]) .breeze\:border-solid{--tw-border-style:solid;border-style:solid}:where([data-breeze-root]) .breeze\:border-breeze-line-strong{border-color:var(--breeze-color-breeze-line-strong)}:where([data-breeze-root]) .breeze\:border-transparent{border-color:#0000}:where([data-breeze-root]) .breeze\:bg-breeze-brand{background-color:var(--breeze-color-breeze-brand)}:where([data-breeze-root]) .breeze\:bg-breeze-danger-fill{background-color:var(--breeze-color-breeze-danger-fill)}:where([data-breeze-root]) .breeze\:bg-breeze-line-strong{background-color:var(--breeze-color-breeze-line-strong)}:where([data-breeze-root]) .breeze\:bg-breeze-on-brand\/35{background-color:var(--breeze-color-breeze-on-brand)}@supports (color:color-mix(in lab, red, red)){:where([data-breeze-root]) .breeze\:bg-breeze-on-brand\/35{background-color:color-mix(in oklab, var(--breeze-color-breeze-on-brand) 35%, transparent)}}:where([data-breeze-root]) .breeze\:bg-breeze-surface{background-color:var(--breeze-color-breeze-surface)}:where([data-breeze-root]) .breeze\:bg-transparent{background-color:#0000}:where([data-breeze-root]) .breeze\:py-breeze-1{padding-block:var(--breeze-spacing-breeze-1)}:where([data-breeze-root]) .breeze\:py-breeze-2{padding-block:var(--breeze-spacing-breeze-2)}:where([data-breeze-root]) .breeze\:py-breeze-3{padding-block:var(--breeze-spacing-breeze-3)}:where([data-breeze-root]) .breeze\:ps-breeze-3{padding-inline-start:var(--breeze-spacing-breeze-3)}:where([data-breeze-root]) .breeze\:ps-breeze-5{padding-inline-start:var(--breeze-spacing-breeze-5)}:where([data-breeze-root]) .breeze\:pe-breeze-3{padding-inline-end:var(--breeze-spacing-breeze-3)}:where([data-breeze-root]) .breeze\:pe-breeze-5{padding-inline-end:var(--breeze-spacing-breeze-5)}:where([data-breeze-root]) .breeze\:\[text-align\:center\]{text-align:center}:where([data-breeze-root]) .breeze\:font-breeze-sans{font-family:var(--breeze-font-breeze-sans)}:where([data-breeze-root]) .breeze\:text-breeze-sm{font-size:var(--breeze-text-breeze-sm)}:where([data-breeze-root]) .breeze\:text-breeze-xs{font-size:var(--breeze-text-breeze-xs)}:where([data-breeze-root]) .breeze\:leading-breeze-snug{--tw-leading:var(--breeze-leading-breeze-snug);line-height:var(--breeze-leading-breeze-snug)}:where([data-breeze-root]) .breeze\:text-breeze-brand-text{color:var(--breeze-color-breeze-brand-text)}:where([data-breeze-root]) .breeze\:text-breeze-ink{color:var(--breeze-color-breeze-ink)}:where([data-breeze-root]) .breeze\:text-breeze-on-brand{color:var(--breeze-color-breeze-on-brand)}:where([data-breeze-root]) .breeze\:opacity-0{opacity:0}:where([data-breeze-root]) .breeze\:opacity-50{opacity:.5}:where([data-breeze-root]) .breeze\:outline-offset-2{outline-offset:2px}:where([data-breeze-root]) .breeze\:select-none{-webkit-user-select:none;user-select:none}:where([data-breeze-root]) .breeze\:\[grid-area\:1\/1\]{grid-area:1/1}:where([data-breeze-root]) .breeze\:block-size-breeze-3{block-size:var(--breeze-spacing-breeze-3)}:where([data-breeze-root]) .breeze\:inline-size-full{inline-size:100%}:where([data-breeze-root]) .breeze\:min-block-breeze-lg{min-block-size:var(--breeze-spacing-breeze-lg);min-block-size:var(--breeze-spacing-breeze-lg)}:where([data-breeze-root]) .breeze\:min-block-breeze-md{min-block-size:var(--breeze-spacing-breeze-md);min-block-size:var(--breeze-spacing-breeze-md)}:where([data-breeze-root]) .breeze\:min-block-breeze-sm{min-block-size:var(--breeze-spacing-breeze-sm);min-block-size:var(--breeze-spacing-breeze-sm)}:where([data-breeze-root]) .breeze\:data-\[focus-visible\]\:outline-2[data-focus-visible]{outline-style:var(--tw-outline-style);outline-width:2px}:where([data-breeze-root]) .breeze\:data-\[focus-visible\]\:outline-breeze-brand[data-focus-visible]{outline-color:var(--breeze-color-breeze-brand)}:where([data-breeze-root]) .breeze\:data-\[focus-visible\]\:outline-solid[data-focus-visible]{--tw-outline-style:solid;outline-style:solid}:where([data-breeze-root]) .breeze\:data-\[hovered\]\:bg-breeze-brand-hover[data-hovered]{background-color:var(--breeze-color-breeze-brand-hover)}:where([data-breeze-root]) .breeze\:data-\[hovered\]\:bg-breeze-brand-soft[data-hovered]{background-color:var(--breeze-color-breeze-brand-soft)}:where([data-breeze-root]) .breeze\:data-\[hovered\]\:bg-breeze-danger-hover[data-hovered]{background-color:var(--breeze-color-breeze-danger-hover)}:where([data-breeze-root]) .breeze\:data-\[hovered\]\:bg-breeze-sunken[data-hovered]{background-color:var(--breeze-color-breeze-sunken)}:where([data-breeze-root]) .breeze\:data-\[pressed\]\:bg-breeze-brand-hover[data-pressed]{background-color:var(--breeze-color-breeze-brand-hover)}:where([data-breeze-root]) .breeze\:data-\[pressed\]\:bg-breeze-brand-soft[data-pressed]{background-color:var(--breeze-color-breeze-brand-soft)}:where([data-breeze-root]) .breeze\:data-\[pressed\]\:bg-breeze-danger-hover[data-pressed]{background-color:var(--breeze-color-breeze-danger-hover)}:where([data-breeze-root]) .breeze\:data-\[pressed\]\:bg-breeze-sunken[data-pressed]{background-color:var(--breeze-color-breeze-sunken)}:where([data-breeze-root]) .breeze\:data-\[selected\]\:border-breeze-brand[data-selected]{border-color:var(--breeze-color-breeze-brand)}:where([data-breeze-root]) .breeze\:data-\[selected\]\:bg-breeze-brand-soft[data-selected]{background-color:var(--breeze-color-breeze-brand-soft)}:where([data-breeze-root]) .breeze\:data-\[selected\]\:text-breeze-brand-text[data-selected]{color:var(--breeze-color-breeze-brand-text)}@media (forced-colors:active){:where([data-breeze-root]) .breeze\:forced-colors\:data-\[selected\]\:outline-2[data-selected]{outline-style:var(--tw-outline-style);outline-width:2px}:where([data-breeze-root]) .breeze\:forced-colors\:data-\[selected\]\:outline-offset-2[data-selected]{outline-offset:2px}}@media (any-pointer:coarse){:where([data-breeze-root]) .breeze\:any-pointer-coarse\:min-block-breeze-tap{min-block-size:var(--breeze-spacing-breeze-tap);min-block-size:var(--breeze-spacing-breeze-tap)}:where([data-breeze-root]) .breeze\:any-pointer-coarse\:min-inline-breeze-tap{min-inline-size:var(--breeze-spacing-breeze-tap);min-inline-size:var(--breeze-spacing-breeze-tap)}}}@font-face{font-family:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./assets/public-sans-latin-wght-normal-DdeTHZLK.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root,:host{--breeze-breakpoint-breeze-sm:42.5625rem;--breeze-breakpoint-breeze-md:56.3125rem;--breeze-breakpoint-breeze-lg:73.8125rem;--breeze-font-breeze-sans:"Public Sans Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", helvetica, arial, sans-serif;--breeze-color-breeze-brand:#007fa8;--breeze-color-breeze-brand-hover:#007aa3;--breeze-color-breeze-brand-text:#006884;--breeze-color-breeze-brand-soft:#e3f2f8;--breeze-color-breeze-on-brand:#fff;--breeze-color-breeze-canvas:#f6f9fc;--breeze-color-breeze-surface:#fff;--breeze-color-breeze-raised:#f6f9fc;--breeze-color-breeze-sunken:#eff3f8;--breeze-color-breeze-line:#e3e8ee;--breeze-color-breeze-line-strong:#cfd7e0;--breeze-color-breeze-ink:#161616;--breeze-color-breeze-ink-2:#4a4f57;--breeze-color-breeze-ink-3:#66707c;--breeze-color-breeze-pos:#127a4e;--breeze-color-breeze-pos-soft:#e4f1ea;--breeze-color-breeze-warn:#8a5a0b;--breeze-color-breeze-warn-soft:#fdf3dc;--breeze-color-breeze-danger:#b4231d;--breeze-text-breeze-2xs:11px;--breeze-text-breeze-xs:12px;--breeze-text-breeze-sm:13px;--breeze-text-breeze-base:14px;--breeze-text-breeze-md:15px;--breeze-text-breeze-lg:17px;--breeze-text-breeze-xl:20px;--breeze-text-breeze-2xl:22px;--breeze-text-breeze-3xl:24px;--breeze-text-breeze-4xl:26px;--breeze-spacing-breeze-md:38px;--breeze-spacing-breeze-lg:52px;--breeze-spacing-breeze-sm:34px;--breeze-spacing-breeze-tap:44px;--breeze-spacing-breeze-row:64px;--breeze-spacing-breeze-sheet:610px;--breeze-spacing-breeze-card:400px;--breeze-radius-breeze-panel:8px;--breeze-radius-breeze-ctl:6px;--breeze-radius-breeze-chip:3px;--breeze-leading-breeze-tight:1.1;--breeze-leading-breeze-snug:1.45;--breeze-leading-breeze-normal:1.5;--breeze-tracking-breeze-tight:-.008em;--breeze-tracking-breeze-tighter:-.012em;--breeze-tracking-breeze-tightest:-.018em;--breeze-tracking-breeze-caps:.06em;--breeze-tracking-breeze-wide:.05em;--breeze-aspect-breeze-a4:1/1.414;--breeze-aspect-breeze-photo:3/4;--breeze-container-breeze-page:1500px;--breeze-container-breeze-read:54ch;--breeze-container-breeze-prose:52ch;--breeze-color-breeze-scrim:#0c121f;--breeze-radius-breeze-xs:2px;--breeze-radius-breeze-sm:4px;--breeze-color-breeze-danger-fill:#b4231d;--breeze-color-breeze-danger-hover:#981e19;--breeze-radius-breeze-full:9999px;--breeze-spacing-breeze-1:4px;--breeze-spacing-breeze-2:8px;--breeze-spacing-breeze-3:12px;--breeze-spacing-breeze-4:16px;--breeze-spacing-breeze-5:20px;--breeze-spacing-breeze-6:24px;--breeze-spacing-breeze-8:32px}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--breeze-shadow-panel:0 1px 1px #16161608, 0 2px 5px #1616160a;--breeze-shadow-overlay:0 1px 2px #1616160f, 0 8px 24px -10px #16161640}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--breeze-color-breeze-brand-text:#33aacf;--breeze-color-breeze-brand-soft:#12313b;--breeze-color-breeze-canvas:#161616;--breeze-color-breeze-surface:#1f1f1f;--breeze-color-breeze-raised:#262626;--breeze-color-breeze-sunken:#262626;--breeze-color-breeze-line:#303030;--breeze-color-breeze-line-strong:#3d3d3d;--breeze-color-breeze-ink:#f2f2f2;--breeze-color-breeze-ink-2:#b4b4b4;--breeze-color-breeze-ink-3:#949494;--breeze-color-breeze-pos:#3fbf8b;--breeze-color-breeze-pos-soft:#16291f;--breeze-color-breeze-warn:#e0b341;--breeze-color-breeze-warn-soft:#2a2314;--breeze-color-breeze-danger:#f1736a;--breeze-shadow-panel:0 1px 1px #0006;--breeze-shadow-overlay:0 1px 2px #00000080, 0 8px 24px -10px #000000b3}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--breeze-color-breeze-brand-text:#33aacf;--breeze-color-breeze-brand-soft:#12313b;--breeze-color-breeze-canvas:#161616;--breeze-color-breeze-surface:#1f1f1f;--breeze-color-breeze-raised:#262626;--breeze-color-breeze-sunken:#262626;--breeze-color-breeze-line:#303030;--breeze-color-breeze-line-strong:#3d3d3d;--breeze-color-breeze-ink:#f2f2f2;--breeze-color-breeze-ink-2:#b4b4b4;--breeze-color-breeze-ink-3:#949494;--breeze-color-breeze-pos:#3fbf8b;--breeze-color-breeze-pos-soft:#16291f;--breeze-color-breeze-warn:#e0b341;--breeze-color-breeze-warn-soft:#2a2314;--breeze-color-breeze-danger:#f1736a;--breeze-shadow-panel:0 1px 1px #0006;--breeze-shadow-overlay:0 1px 2px #00000080, 0 8px 24px -10px #000000b3}@media (prefers-reduced-motion:reduce){:where([data-breeze-root]) *,:where([data-breeze-root]) :before,:where([data-breeze-root]) :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (forced-colors:active){:where([data-breeze-root]) button{border-color:buttontext}:where([data-breeze-root]) [data-focus-visible]{outline-color:highlight}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}
|
package/package.json
CHANGED