@evinvest/uikit 0.32.0 → 0.33.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.
- package/README.md +21 -10
- package/dist/components/atomic/accordion.js +2 -1
- package/dist/components/atomic/accordion.js.map +1 -1
- package/dist/components/atomic/alert.js +4 -4
- package/dist/components/atomic/alert.js.map +1 -1
- package/dist/components/atomic/badge.js +4 -3
- package/dist/components/atomic/badge.js.map +1 -1
- package/dist/components/atomic/breadcrumb.js +7 -9
- package/dist/components/atomic/breadcrumb.js.map +1 -1
- package/dist/components/atomic/button.js +4 -3
- package/dist/components/atomic/button.js.map +1 -1
- package/dist/components/atomic/calendar.js +10 -25
- package/dist/components/atomic/calendar.js.map +1 -1
- package/dist/components/atomic/checkbox.js +2 -1
- package/dist/components/atomic/checkbox.js.map +1 -1
- package/dist/components/atomic/command.js +5 -20
- package/dist/components/atomic/command.js.map +1 -1
- package/dist/components/atomic/context-menu.js +6 -13
- package/dist/components/atomic/context-menu.js.map +1 -1
- package/dist/components/atomic/dialog.js +4 -2
- package/dist/components/atomic/dialog.js.map +1 -1
- package/dist/components/atomic/dropdown-menu.js +6 -14
- package/dist/components/atomic/dropdown-menu.js.map +1 -1
- package/dist/components/atomic/hover-card.js.map +1 -1
- package/dist/components/atomic/info-tip.js +8 -9
- package/dist/components/atomic/info-tip.js.map +1 -1
- package/dist/components/atomic/input-otp.js +2 -1
- package/dist/components/atomic/input-otp.js.map +1 -1
- package/dist/components/atomic/key-value.js +5 -4
- package/dist/components/atomic/key-value.js.map +1 -1
- package/dist/components/atomic/menubar.js +7 -18
- package/dist/components/atomic/menubar.js.map +1 -1
- package/dist/components/atomic/native-select.js +1 -1
- package/dist/components/atomic/native-select.js.map +1 -1
- package/dist/components/atomic/navigation-menu.js +6 -14
- package/dist/components/atomic/navigation-menu.js.map +1 -1
- package/dist/components/atomic/pagination.js +18 -19
- package/dist/components/atomic/pagination.js.map +1 -1
- package/dist/components/atomic/popover.js.map +1 -1
- package/dist/components/atomic/radio-group.js +5 -4
- package/dist/components/atomic/radio-group.js.map +1 -1
- package/dist/components/atomic/section-descriptor.js +5 -8
- package/dist/components/atomic/section-descriptor.js.map +1 -1
- package/dist/components/atomic/select-listbox.js +2 -2
- package/dist/components/atomic/select-listbox.js.map +1 -1
- package/dist/components/atomic/select.js +5 -13
- package/dist/components/atomic/select.js.map +1 -1
- package/dist/components/atomic/sheet.js +4 -2
- package/dist/components/atomic/sheet.js.map +1 -1
- package/dist/components/atomic/sidebar.js +7 -26
- package/dist/components/atomic/sidebar.js.map +1 -1
- package/dist/components/atomic/slider.js.map +1 -1
- package/dist/components/atomic/sonner.js +20 -18
- package/dist/components/atomic/sonner.js.map +1 -1
- package/dist/components/atomic/spinner.js +6 -3
- package/dist/components/atomic/spinner.js.map +1 -1
- package/dist/components/atomic/tabs.js.map +1 -1
- package/dist/components/atomic/toggle-group.js +2 -2
- package/dist/components/atomic/toggle-group.js.map +1 -1
- package/dist/components/atomic/toggle.js +3 -6
- package/dist/components/atomic/toggle.js.map +1 -1
- package/dist/components/atomic/tooltip.js.map +1 -1
- package/dist/components/derived/carousel.js +6 -6
- package/dist/components/derived/carousel.js.map +1 -1
- package/dist/components/derived/command-palette.js +8 -7
- package/dist/components/derived/command-palette.js.map +1 -1
- package/dist/components/derived/confirm-dialog.js +8 -13
- package/dist/components/derived/confirm-dialog.js.map +1 -1
- package/dist/components/derived/date-time-picker.js +10 -14
- package/dist/components/derived/date-time-picker.js.map +1 -1
- package/dist/components/derived/field.js.map +1 -1
- package/dist/components/derived/form.js +0 -1
- package/dist/components/derived/form.js.map +1 -1
- package/dist/components/derived/icon-button.js.map +1 -1
- package/dist/components/derived/item.js +0 -1
- package/dist/components/derived/item.js.map +1 -1
- package/dist/components/derived/popover-form.js +4 -3
- package/dist/components/derived/popover-form.js.map +1 -1
- package/dist/components/derived/settings.js +4 -4
- package/dist/components/derived/settings.js.map +1 -1
- package/dist/components/shell/account-menu-profile.js +1 -1
- package/dist/components/shell/account-menu-profile.js.map +1 -1
- package/dist/components/shell/account-settings-dialog.js +3 -2
- package/dist/components/shell/account-settings-dialog.js.map +1 -1
- package/dist/components/shell/aside.js +6 -4
- package/dist/components/shell/aside.js.map +1 -1
- package/dist/components/shell/auth-wall.js +3 -5
- package/dist/components/shell/auth-wall.js.map +1 -1
- package/dist/components/shell/bottom-tab-bar.js +3 -3
- package/dist/components/shell/bottom-tab-bar.js.map +1 -1
- package/dist/components/shell/chat-composer.js +9 -7
- package/dist/components/shell/chat-composer.js.map +1 -1
- package/dist/components/shell/chat-message.js.map +1 -1
- package/dist/components/shell/chat-typing.js +2 -1
- package/dist/components/shell/chat-typing.js.map +1 -1
- package/dist/components/shell/footer.js +26 -24
- package/dist/components/shell/footer.js.map +1 -1
- package/dist/components/shell/header-controls.js +17 -15
- package/dist/components/shell/header-controls.js.map +1 -1
- package/dist/components/shell/hotbar.js +158 -0
- package/dist/components/shell/hotbar.js.map +1 -0
- package/dist/components/shell/logo.js +3 -2
- package/dist/components/shell/logo.js.map +1 -1
- package/dist/components/shell/mobile-app-bar.js +4 -4
- package/dist/components/shell/mobile-app-bar.js.map +1 -1
- package/dist/components/shell/nav-collapse.js +6 -5
- package/dist/components/shell/nav-collapse.js.map +1 -1
- package/dist/components/shell/resource-error.js +2 -2
- package/dist/components/shell/resource-error.js.map +1 -1
- package/dist/components/shell/section-nav.js +3 -3
- package/dist/components/shell/section-nav.js.map +1 -1
- package/dist/components/shell/shell-icons.js +7 -22
- package/dist/components/shell/shell-icons.js.map +1 -1
- package/dist/components/shell/shell-nav.js +4 -4
- package/dist/components/shell/shell-nav.js.map +1 -1
- package/dist/components/shell/smart-header.js.map +1 -1
- package/dist/components/shell/status-screen.js +35 -35
- package/dist/components/shell/status-screen.js.map +1 -1
- package/dist/components/shell/system-banner.js +6 -6
- package/dist/components/shell/system-banner.js.map +1 -1
- package/dist/components/shell/workspace-tab.js +2 -1
- package/dist/components/shell/workspace-tab.js.map +1 -1
- package/dist/generated/accent.js +10 -10
- package/dist/generated/accent.js.map +1 -1
- package/dist/generated/accordion.js +6 -2
- package/dist/generated/accordion.js.map +1 -1
- package/dist/generated/account-list.js +4 -4
- package/dist/generated/account-list.js.map +1 -1
- package/dist/generated/account-settings-dialog.js +6 -2
- package/dist/generated/account-settings-dialog.js.map +1 -1
- package/dist/generated/alert-dialog.js +1 -1
- package/dist/generated/alert-dialog.js.map +1 -1
- package/dist/generated/alert.js +3 -10
- package/dist/generated/alert.js.map +1 -1
- package/dist/generated/aside.js +7 -0
- package/dist/generated/aside.js.map +1 -1
- package/dist/generated/badge.js +2 -11
- package/dist/generated/badge.js.map +1 -1
- package/dist/generated/band.js +10 -10
- package/dist/generated/band.js.map +1 -1
- package/dist/generated/breadcrumb.js +1 -1
- package/dist/generated/breadcrumb.js.map +1 -1
- package/dist/generated/button-group.js +3 -3
- package/dist/generated/button-group.js.map +1 -1
- package/dist/generated/button.js +4 -20
- package/dist/generated/button.js.map +1 -1
- package/dist/generated/calendar.js +5 -5
- package/dist/generated/calendar.js.map +1 -1
- package/dist/generated/card.js +1 -1
- package/dist/generated/card.js.map +1 -1
- package/dist/generated/carousel.js +1 -1
- package/dist/generated/carousel.js.map +1 -1
- package/dist/generated/chat-composer.js +9 -2
- package/dist/generated/chat-composer.js.map +1 -1
- package/dist/generated/chat-message.js +25 -19
- package/dist/generated/chat-message.js.map +1 -1
- package/dist/generated/checkbox.js +1 -1
- package/dist/generated/checkbox.js.map +1 -1
- package/dist/generated/command-palette.js +10 -1
- package/dist/generated/command-palette.js.map +1 -1
- package/dist/generated/command.js +8 -6
- package/dist/generated/command.js.map +1 -1
- package/dist/generated/confirm-dialog.js +8 -8
- package/dist/generated/confirm-dialog.js.map +1 -1
- package/dist/generated/context-menu.js +7 -5
- package/dist/generated/context-menu.js.map +1 -1
- package/dist/generated/copy.js +97 -0
- package/dist/generated/copy.js.map +1 -0
- package/dist/generated/date-time-picker.js +10 -0
- package/dist/generated/date-time-picker.js.map +1 -1
- package/dist/generated/dialog.js +2 -2
- package/dist/generated/dialog.js.map +1 -1
- package/dist/generated/drawer.js +6 -6
- package/dist/generated/drawer.js.map +1 -1
- package/dist/generated/dropdown-menu.js +7 -5
- package/dist/generated/dropdown-menu.js.map +1 -1
- package/dist/generated/empty.js +5 -5
- package/dist/generated/empty.js.map +1 -1
- package/dist/generated/field.js +9 -7
- package/dist/generated/field.js.map +1 -1
- package/dist/generated/footer.js +45 -0
- package/dist/generated/footer.js.map +1 -0
- package/dist/generated/header-controls.js +5 -10
- package/dist/generated/header-controls.js.map +1 -1
- package/dist/generated/hover-card.js +1 -1
- package/dist/generated/hover-card.js.map +1 -1
- package/dist/generated/icon-button.js +4 -2
- package/dist/generated/icon-button.js.map +1 -1
- package/dist/generated/icons.js +36 -0
- package/dist/generated/icons.js.map +1 -0
- package/dist/generated/info-tip.js +5 -0
- package/dist/generated/info-tip.js.map +1 -0
- package/dist/generated/input-group.js +10 -10
- package/dist/generated/input-group.js.map +1 -1
- package/dist/generated/input-otp.js +2 -2
- package/dist/generated/input-otp.js.map +1 -1
- package/dist/generated/input.js +4 -4
- package/dist/generated/input.js.map +1 -1
- package/dist/generated/item.js +11 -11
- package/dist/generated/item.js.map +1 -1
- package/dist/generated/kbd.js +1 -1
- package/dist/generated/kbd.js.map +1 -1
- package/dist/generated/key-value.js +7 -1
- package/dist/generated/key-value.js.map +1 -1
- package/dist/generated/label.js +1 -1
- package/dist/generated/label.js.map +1 -1
- package/dist/generated/logo.js +9 -0
- package/dist/generated/logo.js.map +1 -0
- package/dist/generated/menu.js +7 -0
- package/dist/generated/menu.js.map +1 -0
- package/dist/generated/menubar.js +10 -8
- package/dist/generated/menubar.js.map +1 -1
- package/dist/generated/navigation-menu.js +11 -5
- package/dist/generated/navigation-menu.js.map +1 -1
- package/dist/generated/orientation.js +5 -0
- package/dist/generated/orientation.js.map +1 -0
- package/dist/generated/pagination.js +15 -0
- package/dist/generated/pagination.js.map +1 -0
- package/dist/generated/popover-form.js +5 -0
- package/dist/generated/popover-form.js.map +1 -1
- package/dist/generated/popover.js +1 -1
- package/dist/generated/popover.js.map +1 -1
- package/dist/generated/primitives.js +7 -0
- package/dist/generated/primitives.js.map +1 -0
- package/dist/generated/radio-group.js +5 -1
- package/dist/generated/radio-group.js.map +1 -1
- package/dist/generated/section-descriptor.js +7 -0
- package/dist/generated/section-descriptor.js.map +1 -0
- package/dist/generated/select.js +16 -10
- package/dist/generated/select.js.map +1 -1
- package/dist/generated/settings.js +2 -7
- package/dist/generated/settings.js.map +1 -1
- package/dist/generated/sheet.js +1 -1
- package/dist/generated/sheet.js.map +1 -1
- package/dist/generated/sidebar.js +24 -12
- package/dist/generated/sidebar.js.map +1 -1
- package/dist/generated/size.js +12 -0
- package/dist/generated/size.js.map +1 -0
- package/dist/generated/skeleton.js +1 -1
- package/dist/generated/skeleton.js.map +1 -1
- package/dist/generated/slider.js +2 -2
- package/dist/generated/slider.js.map +1 -1
- package/dist/generated/slot.js +5 -0
- package/dist/generated/slot.js.map +1 -0
- package/dist/generated/smart-header.js +2 -0
- package/dist/generated/smart-header.js.map +1 -1
- package/dist/generated/sonner.js +11 -13
- package/dist/generated/sonner.js.map +1 -1
- package/dist/generated/spinner.js +5 -0
- package/dist/generated/spinner.js.map +1 -0
- package/dist/generated/status-screen.js +27 -0
- package/dist/generated/status-screen.js.map +1 -0
- package/dist/generated/switch.js +2 -2
- package/dist/generated/switch.js.map +1 -1
- package/dist/generated/system-banner.js +6 -16
- package/dist/generated/system-banner.js.map +1 -1
- package/dist/generated/table.js +9 -9
- package/dist/generated/table.js.map +1 -1
- package/dist/generated/tabs.js +2 -2
- package/dist/generated/tabs.js.map +1 -1
- package/dist/generated/textarea.js +1 -1
- package/dist/generated/textarea.js.map +1 -1
- package/dist/generated/toggle-group.js +9 -0
- package/dist/generated/toggle-group.js.map +1 -0
- package/dist/generated/toggle.js +1 -9
- package/dist/generated/toggle.js.map +1 -1
- package/dist/generated/tone.js +12 -0
- package/dist/generated/tone.js.map +1 -0
- package/dist/generated/tooltip.js +1 -1
- package/dist/generated/tooltip.js.map +1 -1
- package/dist/generated/workspace-tab.js +3 -3
- package/dist/generated/workspace-tab.js.map +1 -1
- package/dist/icons/icon-shapes.js +10 -0
- package/dist/icons/icon-shapes.js.map +1 -0
- package/dist/icons/select-chevron.js +2 -1
- package/dist/icons/select-chevron.js.map +1 -1
- package/dist/icons/ui-icons.js +3 -57
- package/dist/icons/ui-icons.js.map +1 -1
- package/dist/index.d.ts +203 -155
- package/dist/index.js +1 -0
- package/dist/lib/cn.js +1 -0
- package/dist/lib/cn.js.map +1 -1
- package/dist/primitives/use-floating.js.map +1 -1
- package/dist/primitives/use-roving-focus.js.map +1 -1
- package/package.json +1 -1
- package/styles/ev.css +13 -76
- package/styles/theme.css +133 -66
- package/styles/tokens.css +157 -149
|
@@ -5,14 +5,17 @@ import { cn } from "../../lib/cn.js";
|
|
|
5
5
|
import { accentTextClasses } from "../../generated/accent.js";
|
|
6
6
|
import { buttonVariants } from "../atomic/button.js";
|
|
7
7
|
import { Logo } from "./logo.js";
|
|
8
|
+
import { STATUS_SCREEN_ACTIONS, STATUS_SCREEN_ACTION_ICON, STATUS_SCREEN_BODY, STATUS_SCREEN_CODE, STATUS_SCREEN_CTA, STATUS_SCREEN_EYEBROW, STATUS_SCREEN_GLOW, STATUS_SCREEN_LOGO, STATUS_SCREEN_ROOT, STATUS_SCREEN_STACK, STATUS_SCREEN_TITLE, STATUS_SCREEN_TITLE_ACCENT } from "../../generated/status-screen.js";
|
|
9
|
+
import { iconShapes } from "../../icons/icon-shapes.js";
|
|
10
|
+
import * as copy from "../../generated/copy.js";
|
|
8
11
|
function statusCtaClass(accent, variant) {
|
|
9
12
|
return cn(
|
|
10
13
|
buttonVariants({ variant, size: "lg", accent }),
|
|
11
|
-
|
|
14
|
+
STATUS_SCREEN_CTA
|
|
12
15
|
);
|
|
13
16
|
}
|
|
14
17
|
function ArrowLeftIcon({ className }) {
|
|
15
|
-
return /* @__PURE__ */
|
|
18
|
+
return /* @__PURE__ */ jsx(
|
|
16
19
|
"svg",
|
|
17
20
|
{
|
|
18
21
|
className,
|
|
@@ -23,10 +26,7 @@ function ArrowLeftIcon({ className }) {
|
|
|
23
26
|
strokeLinecap: "round",
|
|
24
27
|
strokeLinejoin: "round",
|
|
25
28
|
"aria-hidden": true,
|
|
26
|
-
children:
|
|
27
|
-
/* @__PURE__ */ jsx("path", { d: "m12 19-7-7 7-7" }),
|
|
28
|
-
/* @__PURE__ */ jsx("path", { d: "M19 12H5" })
|
|
29
|
-
]
|
|
29
|
+
children: iconShapes("arrow-left")
|
|
30
30
|
}
|
|
31
31
|
);
|
|
32
32
|
}
|
|
@@ -44,31 +44,31 @@ function StatusScreen({
|
|
|
44
44
|
}) {
|
|
45
45
|
const L = linkComponent ?? "a";
|
|
46
46
|
const accentText = accentTextClasses[accent];
|
|
47
|
-
return /* @__PURE__ */ jsxs("section", { className:
|
|
47
|
+
return /* @__PURE__ */ jsxs("section", { className: STATUS_SCREEN_ROOT, children: [
|
|
48
48
|
/* @__PURE__ */ jsx(
|
|
49
49
|
"div",
|
|
50
50
|
{
|
|
51
51
|
"aria-hidden": true,
|
|
52
52
|
className: cn(
|
|
53
|
-
|
|
53
|
+
STATUS_SCREEN_GLOW,
|
|
54
54
|
accentText
|
|
55
55
|
)
|
|
56
56
|
}
|
|
57
57
|
),
|
|
58
|
-
/* @__PURE__ */ jsxs("div", { className:
|
|
59
|
-
/* @__PURE__ */ jsx(Logo, { className: cn(
|
|
60
|
-
/* @__PURE__ */ jsx("p", { className: cn(
|
|
61
|
-
/* @__PURE__ */ jsx("p", { className: cn(
|
|
62
|
-
/* @__PURE__ */ jsxs("h1", { className:
|
|
58
|
+
/* @__PURE__ */ jsxs("div", { className: STATUS_SCREEN_STACK, children: [
|
|
59
|
+
/* @__PURE__ */ jsx(Logo, { className: cn(STATUS_SCREEN_LOGO, accentText) }),
|
|
60
|
+
/* @__PURE__ */ jsx("p", { className: cn(STATUS_SCREEN_EYEBROW, accentText), children: eyebrow }),
|
|
61
|
+
/* @__PURE__ */ jsx("p", { className: cn(STATUS_SCREEN_CODE, accentText), children: code }),
|
|
62
|
+
/* @__PURE__ */ jsxs("h1", { className: STATUS_SCREEN_TITLE, children: [
|
|
63
63
|
headlineLead,
|
|
64
|
-
/* @__PURE__ */ jsx("span", { className: cn(
|
|
64
|
+
/* @__PURE__ */ jsx("span", { className: cn(STATUS_SCREEN_TITLE_ACCENT, accentText), children: headlineAccent }),
|
|
65
65
|
headlineTail
|
|
66
66
|
] }),
|
|
67
|
-
/* @__PURE__ */ jsx("p", { className:
|
|
68
|
-
/* @__PURE__ */ jsxs("div", { className:
|
|
67
|
+
/* @__PURE__ */ jsx("p", { className: STATUS_SCREEN_BODY, children: subtext }),
|
|
68
|
+
/* @__PURE__ */ jsxs("div", { className: STATUS_SCREEN_ACTIONS, children: [
|
|
69
69
|
children,
|
|
70
70
|
links?.map((link) => /* @__PURE__ */ jsxs(L, { href: link.href, className: statusCtaClass(accent, link.variant ?? "primary"), children: [
|
|
71
|
-
link.leadingArrow ? /* @__PURE__ */ jsx(ArrowLeftIcon, { className:
|
|
71
|
+
link.leadingArrow ? /* @__PURE__ */ jsx(ArrowLeftIcon, { className: STATUS_SCREEN_ACTION_ICON }) : null,
|
|
72
72
|
link.label
|
|
73
73
|
] }, link.label))
|
|
74
74
|
] })
|
|
@@ -80,15 +80,15 @@ function NotFound({ linkComponent = "a", homeHref = "/", contactHref = "/contact
|
|
|
80
80
|
StatusScreen,
|
|
81
81
|
{
|
|
82
82
|
accent: "debug",
|
|
83
|
-
eyebrow:
|
|
83
|
+
eyebrow: copy.NOT_FOUND_EYEBROW,
|
|
84
84
|
code: "404",
|
|
85
|
-
headlineLead:
|
|
86
|
-
headlineAccent:
|
|
87
|
-
subtext:
|
|
85
|
+
headlineLead: copy.NOT_FOUND_HEADLINE_LEAD,
|
|
86
|
+
headlineAccent: copy.NOT_FOUND_HEADLINE_ACCENT,
|
|
87
|
+
subtext: copy.NOT_FOUND_SUBTEXT,
|
|
88
88
|
linkComponent,
|
|
89
89
|
links: [
|
|
90
|
-
{ label:
|
|
91
|
-
{ label:
|
|
90
|
+
{ label: copy.STATUS_HOME, href: homeHref, leadingArrow: true },
|
|
91
|
+
{ label: copy.NOT_FOUND_CONTACT, href: contactHref, variant: "outline" }
|
|
92
92
|
]
|
|
93
93
|
}
|
|
94
94
|
);
|
|
@@ -98,15 +98,15 @@ function Forbidden({ linkComponent = "a", homeHref = "/", contactHref = "/contac
|
|
|
98
98
|
StatusScreen,
|
|
99
99
|
{
|
|
100
100
|
accent: "warn",
|
|
101
|
-
eyebrow:
|
|
101
|
+
eyebrow: copy.FORBIDDEN_EYEBROW,
|
|
102
102
|
code: "403",
|
|
103
|
-
headlineLead:
|
|
104
|
-
headlineAccent:
|
|
105
|
-
subtext:
|
|
103
|
+
headlineLead: copy.FORBIDDEN_HEADLINE_LEAD,
|
|
104
|
+
headlineAccent: copy.FORBIDDEN_HEADLINE_ACCENT,
|
|
105
|
+
subtext: copy.FORBIDDEN_SUBTEXT,
|
|
106
106
|
linkComponent,
|
|
107
107
|
links: [
|
|
108
|
-
{ label:
|
|
109
|
-
{ label:
|
|
108
|
+
{ label: copy.STATUS_HOME, href: homeHref, leadingArrow: true },
|
|
109
|
+
{ label: copy.FORBIDDEN_CONTACT, href: contactHref, variant: "outline" }
|
|
110
110
|
]
|
|
111
111
|
}
|
|
112
112
|
);
|
|
@@ -116,20 +116,20 @@ function ServerError({ linkComponent = "a", homeHref = "/", reset }) {
|
|
|
116
116
|
StatusScreen,
|
|
117
117
|
{
|
|
118
118
|
accent: "error",
|
|
119
|
-
eyebrow:
|
|
119
|
+
eyebrow: copy.SERVER_ERROR_EYEBROW,
|
|
120
120
|
code: "500",
|
|
121
|
-
headlineLead:
|
|
122
|
-
headlineAccent:
|
|
123
|
-
subtext:
|
|
121
|
+
headlineLead: copy.SERVER_ERROR_HEADLINE_LEAD,
|
|
122
|
+
headlineAccent: copy.SERVER_ERROR_HEADLINE_ACCENT,
|
|
123
|
+
subtext: copy.SERVER_ERROR_SUBTEXT,
|
|
124
124
|
linkComponent,
|
|
125
|
-
links: [{ label:
|
|
125
|
+
links: [{ label: copy.STATUS_HOME, href: homeHref, variant: "outline", leadingArrow: true }],
|
|
126
126
|
children: /* @__PURE__ */ jsx(
|
|
127
127
|
"button",
|
|
128
128
|
{
|
|
129
129
|
type: "button",
|
|
130
130
|
className: statusCtaClass("error", "primary"),
|
|
131
131
|
onClick: () => reset ? reset() : window.location.reload(),
|
|
132
|
-
children:
|
|
132
|
+
children: copy.SERVER_ERROR_RETRY
|
|
133
133
|
}
|
|
134
134
|
)
|
|
135
135
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/shell/status-screen.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { accentTextClasses, type Accent } from \"../../generated/accent\";\nimport { buttonVariants, type ButtonVariant } from \"../atomic/button\";\nimport { Logo } from \"./logo\";\n\n/**\n * The shared 404 / 403 / 500 status surface.\n *\n * `StatusScreen` is the generic shell; `NotFound` / `Forbidden` / `ServerError`\n * are the ready-made pages with their copy baked in — a host renders those with\n * its own hrefs. The mark is `Logo`'s, i.e. the consumer's. Links default to a\n * plain `<a>` (a full document load, which is what you want off an error page);\n * pass `linkComponent` (e.g. `next/link`) for soft navigation from a client\n * boundary.\n */\nexport type { Accent };\n\n/**\n * A status CTA is a Button at the page's accent: the canonical button string for\n * that variant and rung, then the mono/uppercase treatment the error pages wear.\n *\n * Exported because a host that renders its own action into `StatusScreen`'s\n * slot — a retry button wired to Next's `reset`, say — has to be able to match\n * the CTAs beside it.\n */\nexport function statusCtaClass(accent: Accent, variant: ButtonVariant) {\n return cn(\n buttonVariants({ variant, size: \"lg\", accent }),\n \"font-mono text-xs uppercase tracking-widest\",\n );\n}\n\n// lucide `arrow-left`, inlined so the kit keeps its zero-icon-dep footprint.\nfunction ArrowLeftIcon({ className }: { className?: string }) {\n return (\n <svg\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden\n >\n <path d=\"m12 19-7-7 7-7\" />\n <path d=\"M19 12H5\" />\n </svg>\n );\n}\n\nexport interface StatusLinkData {\n label: string;\n href: string;\n variant?: ButtonVariant;\n leadingArrow?: boolean;\n}\n\nexport interface StatusScreenProps {\n accent: Accent;\n eyebrow: string;\n code: string;\n headlineLead: string;\n headlineAccent: string;\n headlineTail?: string;\n subtext: string;\n links?: StatusLinkData[];\n /** Leading action slot, rendered before `links` (e.g. the 500 client retry). */\n children?: React.ReactNode;\n /** CTA element — `next/link` for soft nav; defaults to `<a>` (full load). */\n linkComponent?: React.ElementType;\n}\n\n/**\n * Shared skeleton for the 404 / 403 / 500 status pages: a centred hero with the\n * logo mark, a mono eyebrow, a giant Playfair code, a headline whose final clause\n * is an italic accent, supporting copy, and the CTAs. The accent threads through\n * all four marks. Actions render inline (from `links` data, plus an optional\n * `children` slot) — never passed as a JSX prop through a server boundary.\n */\nexport function StatusScreen({\n accent,\n eyebrow,\n code,\n headlineLead,\n headlineAccent,\n headlineTail = \".\",\n subtext,\n links,\n children,\n linkComponent,\n}: StatusScreenProps) {\n const L = linkComponent ?? \"a\";\n const accentText = accentTextClasses[accent];\n return (\n <section className=\"relative flex min-h-screen flex-col items-center justify-center overflow-hidden bg-background px-6 py-32 text-center\">\n <div\n aria-hidden\n className={cn(\n \"pointer-events-none absolute inset-0 opacity-[0.07] [background:radial-gradient(55%_45%_at_50%_30%,currentColor,transparent_70%)]\",\n accentText,\n )}\n />\n <div className=\"relative z-10 flex w-full max-w-2xl flex-col items-center\">\n <Logo className={cn(\"mb-7 h-10 w-auto\", accentText)} />\n <p className={cn(\"mb-6 font-mono text-[11px] uppercase tracking-[0.34em]\", accentText)}>{eyebrow}</p>\n <p className={cn(\"font-serif text-[110px] font-medium leading-[0.9] sm:text-[180px]\", accentText)}>{code}</p>\n <h1 className=\"mt-4 font-serif text-3xl font-light leading-tight text-ink sm:text-5xl\">\n {headlineLead}\n <span className={cn(\"font-serif italic\", accentText)}>{headlineAccent}</span>\n {headlineTail}\n </h1>\n <p className=\"mx-auto mt-5 max-w-md text-sm leading-relaxed text-ink/60 sm:text-base\">{subtext}</p>\n <div className=\"mt-9 flex flex-col items-center gap-3 sm:flex-row\">\n {children}\n {links?.map((link) => (\n <L key={link.label} href={link.href} className={statusCtaClass(accent, link.variant ?? \"primary\")}>\n {link.leadingArrow ? <ArrowLeftIcon className=\"mr-2 h-4 w-4\" /> : null}\n {link.label}\n </L>\n ))}\n </div>\n </div>\n </section>\n );\n}\n\nexport interface StatusPageProps {\n /** CTA element — `next/link` for soft nav; defaults to `<a>` (full load). */\n linkComponent?: React.ElementType;\n /** \"Back to home\" target — `/` for the landing, `/cabinet` for the cabinet. */\n homeHref?: string;\n /** Secondary CTA target (contact / request access). */\n contactHref?: string;\n}\n\n/** 404 — page not found. */\nexport function NotFound({ linkComponent = \"a\", homeHref = \"/\", contactHref = \"/contact\" }: StatusPageProps) {\n return (\n <StatusScreen\n accent=\"debug\"\n eyebrow=\"Page not found\"\n code=\"404\"\n headlineLead=\"You've reached \"\n headlineAccent=\"open water\"\n subtext=\"The page you're looking for has drifted off our coastline — moved, renamed, or never charted. Let's get you back to shore.\"\n linkComponent={linkComponent}\n links={[\n { label: \"Back to home\", href: homeHref, leadingArrow: true },\n { label: \"Contact the team\", href: contactHref, variant: \"outline\" },\n ]}\n />\n );\n}\n\n/** 403 — access forbidden. */\nexport function Forbidden({ linkComponent = \"a\", homeHref = \"/\", contactHref = \"/contact\" }: StatusPageProps) {\n return (\n <StatusScreen\n accent=\"warn\"\n eyebrow=\"Access forbidden\"\n code=\"403\"\n headlineLead=\"This harbour is \"\n headlineAccent=\"private\"\n subtext=\"You don't have the credentials to view this page. If you believe you should, our team can open the right doors.\"\n linkComponent={linkComponent}\n links={[\n { label: \"Back to home\", href: homeHref, leadingArrow: true },\n { label: \"Request access\", href: contactHref, variant: \"outline\" },\n ]}\n />\n );\n}\n\nexport interface ServerErrorProps {\n /** CTA element — `next/link` for soft nav; defaults to `<a>` (full load). */\n linkComponent?: React.ElementType;\n /** \"Back to home\" target — `/` for the landing, `/cabinet` for the cabinet. */\n homeHref?: string;\n /** Retry handler (e.g. Next's error-boundary `reset`); falls back to a reload. */\n reset?: () => void;\n}\n\n/** 500 — server error. The \"Try again\" button runs `reset` or reloads the page. */\nexport function ServerError({ linkComponent = \"a\", homeHref = \"/\", reset }: ServerErrorProps) {\n return (\n <StatusScreen\n accent=\"error\"\n eyebrow=\"Server error\"\n code=\"500\"\n headlineLead=\"Our systems are \"\n headlineAccent=\"recalibrating\"\n subtext=\"Something broke on our end — not yours. We've been alerted and are restoring service. Please try again in a moment.\"\n linkComponent={linkComponent}\n links={[{ label: \"Back to home\", href: homeHref, variant: \"outline\", leadingArrow: true }]}\n >\n <button\n type=\"button\"\n className={statusCtaClass(\"error\", \"primary\")}\n onClick={() => (reset ? reset() : window.location.reload())}\n >\n Try again\n </button>\n </StatusScreen>\n );\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/shell/status-screen.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { accentTextClasses, type Accent } from \"../../generated/accent\";\nimport { buttonVariants, type ButtonVariant } from \"../atomic/button\";\nimport { Logo } from \"./logo\";\nimport { STATUS_SCREEN_ACTIONS, STATUS_SCREEN_ACTION_ICON, STATUS_SCREEN_BODY, STATUS_SCREEN_CODE, STATUS_SCREEN_CTA, STATUS_SCREEN_EYEBROW, STATUS_SCREEN_GLOW, STATUS_SCREEN_LOGO, STATUS_SCREEN_ROOT, STATUS_SCREEN_STACK, STATUS_SCREEN_TITLE, STATUS_SCREEN_TITLE_ACCENT } from \"../../generated/status-screen\";\nimport { iconShapes } from \"../../icons/icon-shapes\";\nimport * as copy from \"../../generated/copy\";\n\n/**\n * The shared 404 / 403 / 500 status surface.\n *\n * `StatusScreen` is the generic shell; `NotFound` / `Forbidden` / `ServerError`\n * are the ready-made pages with their copy baked in — a host renders those with\n * its own hrefs. The mark is `Logo`'s, i.e. the consumer's. Links default to a\n * plain `<a>` (a full document load, which is what you want off an error page);\n * pass `linkComponent` (e.g. `next/link`) for soft navigation from a client\n * boundary.\n */\nexport type { Accent };\n\n/**\n * A status CTA is a Button at the page's accent: the canonical button string for\n * that variant and rung, then the mono/uppercase treatment the error pages wear.\n *\n * Exported because a host that renders its own action into `StatusScreen`'s\n * slot — a retry button wired to Next's `reset`, say — has to be able to match\n * the CTAs beside it.\n */\nexport function statusCtaClass(accent: Accent, variant: ButtonVariant) {\n return cn(\n buttonVariants({ variant, size: \"lg\", accent }),\n STATUS_SCREEN_CTA,\n );\n}\n\nfunction ArrowLeftIcon({ className }: { className?: string }) {\n return (\n <svg\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden\n >\n {iconShapes(\"arrow-left\")}\n </svg>\n );\n}\n\nexport interface StatusLinkData {\n label: string;\n href: string;\n variant?: ButtonVariant;\n leadingArrow?: boolean;\n}\n\nexport interface StatusScreenProps {\n accent: Accent;\n eyebrow: string;\n code: string;\n headlineLead: string;\n headlineAccent: string;\n headlineTail?: string;\n subtext: string;\n links?: StatusLinkData[];\n /** Leading action slot, rendered before `links` (e.g. the 500 client retry). */\n children?: React.ReactNode;\n /** CTA element — `next/link` for soft nav; defaults to `<a>` (full load). */\n linkComponent?: React.ElementType;\n}\n\n/**\n * Shared skeleton for the 404 / 403 / 500 status pages: a centred hero with the\n * logo mark, a mono eyebrow, a giant Playfair code, a headline whose final clause\n * is an italic accent, supporting copy, and the CTAs. The accent threads through\n * all four marks. Actions render inline (from `links` data, plus an optional\n * `children` slot) — never passed as a JSX prop through a server boundary.\n */\nexport function StatusScreen({\n accent,\n eyebrow,\n code,\n headlineLead,\n headlineAccent,\n headlineTail = \".\",\n subtext,\n links,\n children,\n linkComponent,\n}: StatusScreenProps) {\n const L = linkComponent ?? \"a\";\n const accentText = accentTextClasses[accent];\n return (\n <section className={STATUS_SCREEN_ROOT}>\n <div\n aria-hidden\n className={cn(\n STATUS_SCREEN_GLOW,\n accentText,\n )}\n />\n <div className={STATUS_SCREEN_STACK}>\n <Logo className={cn(STATUS_SCREEN_LOGO, accentText)} />\n <p className={cn(STATUS_SCREEN_EYEBROW, accentText)}>{eyebrow}</p>\n <p className={cn(STATUS_SCREEN_CODE, accentText)}>{code}</p>\n <h1 className={STATUS_SCREEN_TITLE}>\n {headlineLead}\n <span className={cn(STATUS_SCREEN_TITLE_ACCENT, accentText)}>{headlineAccent}</span>\n {headlineTail}\n </h1>\n <p className={STATUS_SCREEN_BODY}>{subtext}</p>\n <div className={STATUS_SCREEN_ACTIONS}>\n {children}\n {links?.map((link) => (\n <L key={link.label} href={link.href} className={statusCtaClass(accent, link.variant ?? \"primary\")}>\n {link.leadingArrow ? <ArrowLeftIcon className={STATUS_SCREEN_ACTION_ICON} /> : null}\n {link.label}\n </L>\n ))}\n </div>\n </div>\n </section>\n );\n}\n\nexport interface StatusPageProps {\n /** CTA element — `next/link` for soft nav; defaults to `<a>` (full load). */\n linkComponent?: React.ElementType;\n /** copy.STATUS_HOME target — `/` for the landing, `/cabinet` for the cabinet. */\n homeHref?: string;\n /** Secondary CTA target (contact / request access). */\n contactHref?: string;\n}\n\n/** 404 — page not found. */\nexport function NotFound({ linkComponent = \"a\", homeHref = \"/\", contactHref = \"/contact\" }: StatusPageProps) {\n return (\n <StatusScreen\n accent=\"debug\"\n eyebrow={copy.NOT_FOUND_EYEBROW}\n code=\"404\"\n headlineLead={copy.NOT_FOUND_HEADLINE_LEAD}\n headlineAccent={copy.NOT_FOUND_HEADLINE_ACCENT}\n subtext={copy.NOT_FOUND_SUBTEXT}\n linkComponent={linkComponent}\n links={[\n { label: copy.STATUS_HOME, href: homeHref, leadingArrow: true },\n { label: copy.NOT_FOUND_CONTACT, href: contactHref, variant: \"outline\" },\n ]}\n />\n );\n}\n\n/** 403 — access forbidden. */\nexport function Forbidden({ linkComponent = \"a\", homeHref = \"/\", contactHref = \"/contact\" }: StatusPageProps) {\n return (\n <StatusScreen\n accent=\"warn\"\n eyebrow={copy.FORBIDDEN_EYEBROW}\n code=\"403\"\n headlineLead={copy.FORBIDDEN_HEADLINE_LEAD}\n headlineAccent={copy.FORBIDDEN_HEADLINE_ACCENT}\n subtext={copy.FORBIDDEN_SUBTEXT}\n linkComponent={linkComponent}\n links={[\n { label: copy.STATUS_HOME, href: homeHref, leadingArrow: true },\n { label: copy.FORBIDDEN_CONTACT, href: contactHref, variant: \"outline\" },\n ]}\n />\n );\n}\n\nexport interface ServerErrorProps {\n /** CTA element — `next/link` for soft nav; defaults to `<a>` (full load). */\n linkComponent?: React.ElementType;\n /** copy.STATUS_HOME target — `/` for the landing, `/cabinet` for the cabinet. */\n homeHref?: string;\n /** Retry handler (e.g. Next's error-boundary `reset`); falls back to a reload. */\n reset?: () => void;\n}\n\n/** 500 — server error. The \"Try again\" button runs `reset` or reloads the page. */\nexport function ServerError({ linkComponent = \"a\", homeHref = \"/\", reset }: ServerErrorProps) {\n return (\n <StatusScreen\n accent=\"error\"\n eyebrow={copy.SERVER_ERROR_EYEBROW}\n code=\"500\"\n headlineLead={copy.SERVER_ERROR_HEADLINE_LEAD}\n headlineAccent={copy.SERVER_ERROR_HEADLINE_ACCENT}\n subtext={copy.SERVER_ERROR_SUBTEXT}\n linkComponent={linkComponent}\n links={[{ label: copy.STATUS_HOME, href: homeHref, variant: \"outline\", leadingArrow: true }]}\n >\n <button\n type=\"button\"\n className={statusCtaClass(\"error\", \"primary\")}\n onClick={() => (reset ? reset() : window.location.reload())}\n >\n {copy.SERVER_ERROR_RETRY}\n </button>\n </StatusScreen>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -11,12 +11,12 @@ import {
|
|
|
11
11
|
SYSTEM_BANNER_ICON,
|
|
12
12
|
SYSTEM_BANNER_MESSAGE,
|
|
13
13
|
SYSTEM_BANNER_TITLE,
|
|
14
|
-
|
|
15
|
-
systemBannerToneClasses
|
|
14
|
+
SYSTEM_BANNER_LABELS
|
|
16
15
|
} from "../../generated/system-banner.js";
|
|
16
|
+
import { toneClasses } from "../../generated/tone.js";
|
|
17
17
|
import { CloseIcon, InfoIcon, TriangleAlertIcon } from "./shell-icons.js";
|
|
18
18
|
function SystemBanner({
|
|
19
|
-
tone = "
|
|
19
|
+
tone = "neutral",
|
|
20
20
|
title,
|
|
21
21
|
icon,
|
|
22
22
|
onDismiss,
|
|
@@ -33,10 +33,10 @@ function SystemBanner({
|
|
|
33
33
|
"data-slot": "system-banner",
|
|
34
34
|
"data-tone": tone,
|
|
35
35
|
role: "status",
|
|
36
|
-
className: cn(SYSTEM_BANNER_BASE,
|
|
36
|
+
className: cn(SYSTEM_BANNER_BASE, toneClasses[tone], className),
|
|
37
37
|
...props,
|
|
38
38
|
children: [
|
|
39
|
-
glyph !== null && /* @__PURE__ */ jsx("span", { className:
|
|
39
|
+
glyph !== null && /* @__PURE__ */ jsx("span", { className: SYSTEM_BANNER_ICON, children: glyph }),
|
|
40
40
|
/* @__PURE__ */ jsxs("div", { className: SYSTEM_BANNER_MESSAGE, children: [
|
|
41
41
|
title !== void 0 && /* @__PURE__ */ jsx("span", { className: SYSTEM_BANNER_TITLE, children: title }),
|
|
42
42
|
title !== void 0 && children !== void 0 && " \u2014 ",
|
|
@@ -47,7 +47,7 @@ function SystemBanner({
|
|
|
47
47
|
"button",
|
|
48
48
|
{
|
|
49
49
|
type: "button",
|
|
50
|
-
"aria-label": labels.dismiss ??
|
|
50
|
+
"aria-label": labels.dismiss ?? SYSTEM_BANNER_LABELS.dismiss,
|
|
51
51
|
onClick: onDismiss,
|
|
52
52
|
className: SYSTEM_BANNER_DISMISS,
|
|
53
53
|
children: /* @__PURE__ */ jsx(CloseIcon, { className: SYSTEM_BANNER_GLYPH })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/shell/system-banner.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport {\n SYSTEM_BANNER_ACTION,\n SYSTEM_BANNER_BASE,\n SYSTEM_BANNER_BODY_AFTER_TITLE,\n SYSTEM_BANNER_DISMISS,\n SYSTEM_BANNER_GLYPH,\n SYSTEM_BANNER_ICON,\n SYSTEM_BANNER_MESSAGE,\n SYSTEM_BANNER_TITLE,\n
|
|
1
|
+
{"version":3,"sources":["../../../src/components/shell/system-banner.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport {\n SYSTEM_BANNER_ACTION,\n SYSTEM_BANNER_BASE,\n SYSTEM_BANNER_BODY_AFTER_TITLE,\n SYSTEM_BANNER_DISMISS,\n SYSTEM_BANNER_GLYPH,\n SYSTEM_BANNER_ICON,\n SYSTEM_BANNER_MESSAGE,\n SYSTEM_BANNER_TITLE,\n SYSTEM_BANNER_LABELS,\n} from \"../../generated/system-banner\";\nimport { toneClasses, type Tone } from \"../../generated/tone\";\nimport { CloseIcon, InfoIcon, TriangleAlertIcon } from \"./shell-icons\";\n\nexport interface SystemBannerLabels {\n /** The close button. Default `\"Dismiss\"`. */\n dismiss?: string;\n}\n\nexport interface SystemBannerProps extends Omit<React.ComponentProps<\"div\">, \"title\"> {\n /** `warn` — a platform state (maintenance, read-only); `info` — an announcement. */\n tone?: Tone;\n /** Bold lead before the message. */\n title?: React.ReactNode;\n /** Replaces the tone's glyph; `null` drops it. */\n icon?: React.ReactNode;\n /** Shows a close button; remembering the dismissal is the caller's. */\n onDismiss?: () => void;\n /** A link or button after the message. */\n action?: React.ReactNode;\n labels?: SystemBannerLabels;\n}\n\n/**\n * A slim full-width strip above the page — presentation only: where its state\n * comes from, and whether a dismissal sticks, are the caller's. Put it in\n * `AppShell`'s `banner` slot; several stack with a gap.\n */\nexport function SystemBanner({\n tone = \"neutral\",\n title,\n icon,\n onDismiss,\n action,\n labels = {},\n className,\n children,\n ...props\n}: SystemBannerProps) {\n const glyph =\n icon !== undefined ? icon : tone === \"warn\" ? <TriangleAlertIcon className={SYSTEM_BANNER_GLYPH} /> : <InfoIcon className={SYSTEM_BANNER_GLYPH} />;\n return (\n <div\n data-slot=\"system-banner\"\n data-tone={tone}\n role=\"status\"\n className={cn(SYSTEM_BANNER_BASE, toneClasses[tone], className)}\n {...props}\n >\n {glyph !== null && <span className={SYSTEM_BANNER_ICON}>{glyph}</span>}\n <div className={SYSTEM_BANNER_MESSAGE}>\n {title !== undefined && <span className={SYSTEM_BANNER_TITLE}>{title}</span>}\n {title !== undefined && children !== undefined && \" — \"}\n {children !== undefined && <span className={cn(title !== undefined && SYSTEM_BANNER_BODY_AFTER_TITLE)}>{children}</span>}\n </div>\n {action !== undefined && <span className={SYSTEM_BANNER_ACTION}>{action}</span>}\n {onDismiss && (\n <button\n type=\"button\"\n aria-label={labels.dismiss ?? SYSTEM_BANNER_LABELS.dismiss}\n onClick={onDismiss}\n className={SYSTEM_BANNER_DISMISS}\n >\n <CloseIcon className={SYSTEM_BANNER_GLYPH} />\n </button>\n )}\n </div>\n );\n}\n"],"mappings":";AAsDkD,cAU5C,YAV4C;AApDlD,YAAY,WAAW;AACvB,SAAS,UAAU;AACnB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,mBAA8B;AACvC,SAAS,WAAW,UAAU,yBAAyB;AA0BhD,SAAS,aAAa;AAAA,EAC3B,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS,CAAC;AAAA,EACV;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAsB;AACpB,QAAM,QACJ,SAAS,SAAY,OAAO,SAAS,SAAS,oBAAC,qBAAkB,WAAW,qBAAqB,IAAK,oBAAC,YAAS,WAAW,qBAAqB;AAClJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,aAAW;AAAA,MACX,MAAK;AAAA,MACL,WAAW,GAAG,oBAAoB,YAAY,IAAI,GAAG,SAAS;AAAA,MAC7D,GAAG;AAAA,MAEH;AAAA,kBAAU,QAAQ,oBAAC,UAAK,WAAW,oBAAqB,iBAAM;AAAA,QAC/D,qBAAC,SAAI,WAAW,uBACb;AAAA,oBAAU,UAAa,oBAAC,UAAK,WAAW,qBAAsB,iBAAM;AAAA,UACpE,UAAU,UAAa,aAAa,UAAa;AAAA,UACjD,aAAa,UAAa,oBAAC,UAAK,WAAW,GAAG,UAAU,UAAa,8BAA8B,GAAI,UAAS;AAAA,WACnH;AAAA,QACC,WAAW,UAAa,oBAAC,UAAK,WAAW,sBAAuB,kBAAO;AAAA,QACvE,aACC;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAY,OAAO,WAAW,qBAAqB;AAAA,YACnD,SAAS;AAAA,YACT,WAAW;AAAA,YAEX,8BAAC,aAAU,WAAW,qBAAqB;AAAA;AAAA,QAC7C;AAAA;AAAA;AAAA,EAEJ;AAEJ;","names":[]}
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
WORKSPACE_TABS_BASE
|
|
14
14
|
} from "../../generated/workspace-tab.js";
|
|
15
15
|
import { UiIcon } from "../../icons/ui-icons.js";
|
|
16
|
+
import * as copy from "../../generated/copy.js";
|
|
16
17
|
const WorkspaceTabsContext = React.createContext(null);
|
|
17
18
|
function useWorkspaceTabs() {
|
|
18
19
|
const ctx = React.useContext(WorkspaceTabsContext);
|
|
@@ -65,7 +66,7 @@ function WorkspaceTab({
|
|
|
65
66
|
value,
|
|
66
67
|
icon,
|
|
67
68
|
onClose,
|
|
68
|
-
closeLabel =
|
|
69
|
+
closeLabel = copy.WORKSPACE_TAB_CLOSE,
|
|
69
70
|
className,
|
|
70
71
|
children,
|
|
71
72
|
onClick,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/shell/workspace-tab.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { useControllableState } from \"../../primitives/use-controllable-state\";\nimport {\n WORKSPACE_TAB_BASE,\n WORKSPACE_TAB_CLOSE,\n WORKSPACE_TAB_LABEL,\n WORKSPACE_TAB_SELECTED,\n WORKSPACE_TAB_SPACER,\n WORKSPACE_TAB_TRIGGER,\n WORKSPACE_TABS_BASE,\n} from \"../../generated/workspace-tab\";\nimport { UiIcon } from \"../../icons/ui-icons\";\n\ninterface WorkspaceTabsContextValue {\n value: string;\n setValue: (next: string) => void;\n /** Values of the mounted tabs, in mount order. */\n values: readonly string[];\n register: (value: string) => () => void;\n}\n\nconst WorkspaceTabsContext = React.createContext<WorkspaceTabsContextValue | null>(null);\n\nfunction useWorkspaceTabs(): WorkspaceTabsContextValue {\n const ctx = React.useContext(WorkspaceTabsContext);\n if (!ctx) throw new Error(\"WorkspaceTab must be used within <WorkspaceTabs>\");\n return ctx;\n}\n\nexport interface WorkspaceTabsProps extends Omit<React.ComponentProps<\"div\">, \"onChange\" | \"defaultValue\"> {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n}\n\n/**\n * A row of open workspaces. Arrow keys move focus (Home/End jump); selecting is\n * Enter, Space or a click, so moving through the row never swaps the screen.\n */\nexport function WorkspaceTabs({\n value,\n defaultValue = \"\",\n onValueChange,\n className,\n onKeyDown,\n ...props\n}: WorkspaceTabsProps) {\n const [active, setValue] = useControllableState<string>({\n ...(value !== undefined ? { value } : {}),\n defaultValue,\n ...(onValueChange ? { onChange: onValueChange } : {}),\n });\n const [values, setValues] = React.useState<readonly string[]>([]);\n const register = React.useCallback((v: string) => {\n setValues((prev) => [...prev, v]);\n return () => setValues((prev) => prev.filter((x) => x !== v));\n }, []);\n // Tabs come and go as workspaces open and close, so the order is read from the DOM at key time.\n const move = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const tabs = Array.from(e.currentTarget.querySelectorAll<HTMLElement>('[role=\"tab\"]'));\n const at = tabs.indexOf(document.activeElement as HTMLElement);\n if (at < 0) return;\n const target =\n e.key === \"ArrowRight\" ? (at + 1) % tabs.length\n : e.key === \"ArrowLeft\" ? (at - 1 + tabs.length) % tabs.length\n : e.key === \"Home\" ? 0\n : e.key === \"End\" ? tabs.length - 1\n : -1;\n if (target < 0) return;\n e.preventDefault();\n tabs[target]?.focus();\n };\n return (\n <WorkspaceTabsContext.Provider value={{ value: active, setValue, values, register }}>\n <div\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n data-slot=\"workspace-tabs\"\n className={cn(WORKSPACE_TABS_BASE, className)}\n onKeyDown={(e) => {\n onKeyDown?.(e);\n if (!e.defaultPrevented) move(e);\n }}\n {...props}\n />\n </WorkspaceTabsContext.Provider>\n );\n}\n\nexport interface WorkspaceTabProps extends Omit<React.ComponentProps<\"button\">, \"value\"> {\n value: string;\n /** Leading glyph; the layers glyph by default. */\n icon?: React.ReactNode;\n /** Adds a close button; Delete and Backspace on the tab close it too. */\n onClose?: () => void;\n /** Names the close button, e.g. \"Close Trading\". */\n closeLabel?: string;\n}\n\nexport function WorkspaceTab({\n value,\n icon,\n onClose,\n closeLabel =
|
|
1
|
+
{"version":3,"sources":["../../../src/components/shell/workspace-tab.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { useControllableState } from \"../../primitives/use-controllable-state\";\nimport {\n WORKSPACE_TAB_BASE,\n WORKSPACE_TAB_CLOSE,\n WORKSPACE_TAB_LABEL,\n WORKSPACE_TAB_SELECTED,\n WORKSPACE_TAB_SPACER,\n WORKSPACE_TAB_TRIGGER,\n WORKSPACE_TABS_BASE,\n} from \"../../generated/workspace-tab\";\nimport { UiIcon } from \"../../icons/ui-icons\";\nimport * as copy from \"../../generated/copy\";\n\ninterface WorkspaceTabsContextValue {\n value: string;\n setValue: (next: string) => void;\n /** Values of the mounted tabs, in mount order. */\n values: readonly string[];\n register: (value: string) => () => void;\n}\n\nconst WorkspaceTabsContext = React.createContext<WorkspaceTabsContextValue | null>(null);\n\nfunction useWorkspaceTabs(): WorkspaceTabsContextValue {\n const ctx = React.useContext(WorkspaceTabsContext);\n if (!ctx) throw new Error(\"WorkspaceTab must be used within <WorkspaceTabs>\");\n return ctx;\n}\n\nexport interface WorkspaceTabsProps extends Omit<React.ComponentProps<\"div\">, \"onChange\" | \"defaultValue\"> {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n}\n\n/**\n * A row of open workspaces. Arrow keys move focus (Home/End jump); selecting is\n * Enter, Space or a click, so moving through the row never swaps the screen.\n */\nexport function WorkspaceTabs({\n value,\n defaultValue = \"\",\n onValueChange,\n className,\n onKeyDown,\n ...props\n}: WorkspaceTabsProps) {\n const [active, setValue] = useControllableState<string>({\n ...(value !== undefined ? { value } : {}),\n defaultValue,\n ...(onValueChange ? { onChange: onValueChange } : {}),\n });\n const [values, setValues] = React.useState<readonly string[]>([]);\n const register = React.useCallback((v: string) => {\n setValues((prev) => [...prev, v]);\n return () => setValues((prev) => prev.filter((x) => x !== v));\n }, []);\n // Tabs come and go as workspaces open and close, so the order is read from the DOM at key time.\n const move = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const tabs = Array.from(e.currentTarget.querySelectorAll<HTMLElement>('[role=\"tab\"]'));\n const at = tabs.indexOf(document.activeElement as HTMLElement);\n if (at < 0) return;\n const target =\n e.key === \"ArrowRight\" ? (at + 1) % tabs.length\n : e.key === \"ArrowLeft\" ? (at - 1 + tabs.length) % tabs.length\n : e.key === \"Home\" ? 0\n : e.key === \"End\" ? tabs.length - 1\n : -1;\n if (target < 0) return;\n e.preventDefault();\n tabs[target]?.focus();\n };\n return (\n <WorkspaceTabsContext.Provider value={{ value: active, setValue, values, register }}>\n <div\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n data-slot=\"workspace-tabs\"\n className={cn(WORKSPACE_TABS_BASE, className)}\n onKeyDown={(e) => {\n onKeyDown?.(e);\n if (!e.defaultPrevented) move(e);\n }}\n {...props}\n />\n </WorkspaceTabsContext.Provider>\n );\n}\n\nexport interface WorkspaceTabProps extends Omit<React.ComponentProps<\"button\">, \"value\"> {\n value: string;\n /** Leading glyph; the layers glyph by default. */\n icon?: React.ReactNode;\n /** Adds a close button; Delete and Backspace on the tab close it too. */\n onClose?: () => void;\n /** Names the close button, e.g. \"Close Trading\". */\n closeLabel?: string;\n}\n\nexport function WorkspaceTab({\n value,\n icon,\n onClose,\n closeLabel = copy.WORKSPACE_TAB_CLOSE,\n className,\n children,\n onClick,\n onKeyDown,\n ...props\n}: WorkspaceTabProps) {\n const { value: active, setValue, values, register } = useWorkspaceTabs();\n React.useEffect(() => register(value), [register, value]);\n const selected = active === value;\n // With no selected tab (nothing chosen yet, or the active one was just closed) the first tab\n // takes the tab stop, or the row could not be entered from the keyboard.\n const stop = selected || (!values.includes(active) && values[0] === value);\n return (\n <div\n data-slot=\"workspace-tab\"\n data-state={selected ? \"active\" : \"inactive\"}\n className={cn(\n WORKSPACE_TAB_BASE,\n selected && WORKSPACE_TAB_SELECTED,\n className,\n )}\n >\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={selected}\n tabIndex={stop ? 0 : -1}\n className={WORKSPACE_TAB_TRIGGER}\n onClick={(e) => {\n onClick?.(e);\n setValue(value);\n }}\n onKeyDown={(e) => {\n onKeyDown?.(e);\n if (onClose && (e.key === \"Delete\" || e.key === \"Backspace\")) {\n e.preventDefault();\n // Hand focus to a neighbour first: the closed tab's button unmounts and focus would fall to <body>.\n const tabs = Array.from(\n e.currentTarget.closest('[role=\"tablist\"]')?.querySelectorAll<HTMLElement>('[role=\"tab\"]') ?? [],\n );\n const at = tabs.indexOf(e.currentTarget);\n (tabs[at + 1] ?? tabs[at - 1])?.focus();\n onClose();\n }\n }}\n {...props}\n >\n {icon ?? <UiIcon name=\"layers\" />}\n <span className={WORKSPACE_TAB_LABEL}>{children}</span>\n </button>\n {onClose ? (\n <button\n type=\"button\"\n aria-label={closeLabel}\n tabIndex={-1}\n onClick={onClose}\n className={WORKSPACE_TAB_CLOSE}\n >\n <UiIcon name=\"x\" />\n </button>\n ) : (\n <span className={WORKSPACE_TAB_SPACER} aria-hidden />\n )}\n </div>\n );\n}\n"],"mappings":"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","names":[]}
|
package/dist/generated/accent.js
CHANGED
|
@@ -6,18 +6,18 @@ const accentTextClasses = {
|
|
|
6
6
|
"error": "text-accent-error"
|
|
7
7
|
};
|
|
8
8
|
const accentFillClasses = {
|
|
9
|
-
"trace": "bg-accent-trace text-on-accent-trace hover:bg-accent-trace
|
|
10
|
-
"debug": "bg-accent-debug text-on-accent-debug hover:bg-accent-debug
|
|
11
|
-
"info": "bg-accent-info text-on-accent-info hover:bg-accent-info
|
|
12
|
-
"warn": "bg-accent-warn text-on-accent-warn hover:bg-accent-warn
|
|
13
|
-
"error": "bg-accent-error text-on-accent-error hover:bg-accent-error
|
|
9
|
+
"trace": "bg-accent-trace text-on-accent-trace hover:bg-accent-trace-hover focus-visible:ring-0 focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring",
|
|
10
|
+
"debug": "bg-accent-debug text-on-accent-debug hover:bg-accent-debug-hover focus-visible:ring-0 focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring",
|
|
11
|
+
"info": "bg-accent-info text-on-accent-info hover:bg-accent-info-hover focus-visible:ring-0 focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring",
|
|
12
|
+
"warn": "bg-accent-warn text-on-accent-warn hover:bg-accent-warn-hover focus-visible:ring-0 focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring",
|
|
13
|
+
"error": "bg-accent-error text-on-accent-error hover:bg-accent-error-hover focus-visible:ring-0 focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring"
|
|
14
14
|
};
|
|
15
15
|
const accentOutlineClasses = {
|
|
16
|
-
"trace": "border border-accent-trace/40 text-accent-trace hover:bg-accent-trace/
|
|
17
|
-
"debug": "border border-accent-debug/40 text-accent-debug hover:bg-accent-debug/
|
|
18
|
-
"info": "border border-accent-info/40 text-accent-info-ink hover:bg-accent-info/
|
|
19
|
-
"warn": "border border-accent-warn/40 text-accent-warn hover:bg-accent-warn/
|
|
20
|
-
"error": "border border-accent-error/40 text-accent-error hover:bg-accent-error/
|
|
16
|
+
"trace": "border border-accent-trace/40 text-accent-trace hover:bg-accent-trace/(--tint-hover)",
|
|
17
|
+
"debug": "border border-accent-debug/40 text-accent-debug hover:bg-accent-debug/(--tint-hover)",
|
|
18
|
+
"info": "border border-accent-info/40 text-accent-info-ink hover:bg-accent-info/(--tint-hover)",
|
|
19
|
+
"warn": "border border-accent-warn/40 text-accent-warn hover:bg-accent-warn/(--tint-hover)",
|
|
20
|
+
"error": "border border-accent-error/40 text-accent-error hover:bg-accent-error/(--tint-hover)"
|
|
21
21
|
};
|
|
22
22
|
export {
|
|
23
23
|
accentFillClasses,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/generated/accent.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const accentTextClasses = {\n \"trace\": \"text-accent-trace\",\n \"debug\": \"text-accent-debug\",\n \"info\": \"text-accent-info-ink\",\n \"warn\": \"text-accent-warn\",\n \"error\": \"text-accent-error\",\n} as const;\nexport type Accent = keyof typeof accentTextClasses;\n\nexport const accentFillClasses = {\n \"trace\": \"bg-accent-trace text-on-accent-trace hover:bg-accent-trace
|
|
1
|
+
{"version":3,"sources":["../../src/generated/accent.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const accentTextClasses = {\n \"trace\": \"text-accent-trace\",\n \"debug\": \"text-accent-debug\",\n \"info\": \"text-accent-info-ink\",\n \"warn\": \"text-accent-warn\",\n \"error\": \"text-accent-error\",\n} as const;\nexport type Accent = keyof typeof accentTextClasses;\n\nexport const accentFillClasses = {\n \"trace\": \"bg-accent-trace text-on-accent-trace hover:bg-accent-trace-hover focus-visible:ring-0 focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring\",\n \"debug\": \"bg-accent-debug text-on-accent-debug hover:bg-accent-debug-hover focus-visible:ring-0 focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring\",\n \"info\": \"bg-accent-info text-on-accent-info hover:bg-accent-info-hover focus-visible:ring-0 focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring\",\n \"warn\": \"bg-accent-warn text-on-accent-warn hover:bg-accent-warn-hover focus-visible:ring-0 focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring\",\n \"error\": \"bg-accent-error text-on-accent-error hover:bg-accent-error-hover focus-visible:ring-0 focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring\",\n} as const;\nexport type AccentFill = keyof typeof accentFillClasses;\n\nexport const accentOutlineClasses = {\n \"trace\": \"border border-accent-trace/40 text-accent-trace hover:bg-accent-trace/(--tint-hover)\",\n \"debug\": \"border border-accent-debug/40 text-accent-debug hover:bg-accent-debug/(--tint-hover)\",\n \"info\": \"border border-accent-info/40 text-accent-info-ink hover:bg-accent-info/(--tint-hover)\",\n \"warn\": \"border border-accent-warn/40 text-accent-warn hover:bg-accent-warn/(--tint-hover)\",\n \"error\": \"border border-accent-error/40 text-accent-error hover:bg-accent-error/(--tint-hover)\",\n} as const;\nexport type AccentOutline = keyof typeof accentOutlineClasses;\n"],"mappings":"AAEO,MAAM,oBAAoB;AAAA,EAC/B,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AACX;AAGO,MAAM,oBAAoB;AAAA,EAC/B,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AACX;AAGO,MAAM,uBAAuB;AAAA,EAClC,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AACX;","names":[]}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
const ACCORDION_ITEM = "border-b border-border last:border-b-0";
|
|
2
2
|
const ACCORDION_HEADER = "flex";
|
|
3
|
-
const ACCORDION_TRIGGER = "focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-
|
|
3
|
+
const ACCORDION_TRIGGER = "focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-control py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-(--disabled-opacity) [&[data-state=open]>svg]:rotate-180";
|
|
4
4
|
const ACCORDION_CONTENT = "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm";
|
|
5
5
|
const ACCORDION_CONTENT_INNER = "pt-0 pb-4";
|
|
6
|
+
const ACCORDION_CHEVRON = "text-ink-soft pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200";
|
|
7
|
+
const ACCORDION_TYPES = ["single", "multiple"];
|
|
6
8
|
export {
|
|
9
|
+
ACCORDION_CHEVRON,
|
|
7
10
|
ACCORDION_CONTENT,
|
|
8
11
|
ACCORDION_CONTENT_INNER,
|
|
9
12
|
ACCORDION_HEADER,
|
|
10
13
|
ACCORDION_ITEM,
|
|
11
|
-
ACCORDION_TRIGGER
|
|
14
|
+
ACCORDION_TRIGGER,
|
|
15
|
+
ACCORDION_TYPES
|
|
12
16
|
};
|
|
13
17
|
//# sourceMappingURL=accordion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/generated/accordion.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const ACCORDION_ITEM = \"border-b border-border last:border-b-0\";\n\nexport const ACCORDION_HEADER = \"flex\";\n\nexport const ACCORDION_TRIGGER = \"focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-
|
|
1
|
+
{"version":3,"sources":["../../src/generated/accordion.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const ACCORDION_ITEM = \"border-b border-border last:border-b-0\";\n\nexport const ACCORDION_HEADER = \"flex\";\n\nexport const ACCORDION_TRIGGER = \"focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-control py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-(--disabled-opacity) [&[data-state=open]>svg]:rotate-180\";\n\nexport const ACCORDION_CONTENT = \"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\";\n\nexport const ACCORDION_CONTENT_INNER = \"pt-0 pb-4\";\n\nexport const ACCORDION_CHEVRON = \"text-ink-soft pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200\";\n\nexport const ACCORDION_TYPES = [\"single\", \"multiple\"] as const;\nexport type AccordionType = (typeof ACCORDION_TYPES)[number];\n"],"mappings":"AAEO,MAAM,iBAAiB;AAEvB,MAAM,mBAAmB;AAEzB,MAAM,oBAAoB;AAE1B,MAAM,oBAAoB;AAE1B,MAAM,0BAA0B;AAEhC,MAAM,oBAAoB;AAE1B,MAAM,kBAAkB,CAAC,UAAU,UAAU;","names":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
const ACCOUNT_LIST_BASE = "flex flex-col gap-2";
|
|
2
|
-
const ACCOUNT_LIST_ITEM_BASE = "flex items-center gap-3 rounded-
|
|
2
|
+
const ACCOUNT_LIST_ITEM_BASE = "flex items-center gap-3 rounded-panel border p-2.5 pr-3 transition-colors";
|
|
3
3
|
const ACCOUNT_LIST_ITEM_CHECKED = "border-primary-border bg-selected";
|
|
4
4
|
const ACCOUNT_LIST_ITEM_UNCHECKED = "border-border-subtle bg-muted hover:bg-hover";
|
|
5
|
-
const ACCOUNT_LIST_ITEM_DISABLED = "opacity-
|
|
6
|
-
const ACCOUNT_LIST_ITEM_RADIO = "flex min-w-0 flex-1 items-center gap-3 rounded-
|
|
7
|
-
const ACCOUNT_LIST_ITEM_AVATAR = "size-14 shrink-0 rounded-
|
|
5
|
+
const ACCOUNT_LIST_ITEM_DISABLED = "opacity-(--disabled-opacity)";
|
|
6
|
+
const ACCOUNT_LIST_ITEM_RADIO = "flex min-w-0 flex-1 items-center gap-3 rounded-panel text-left outline-none focus-visible:ring-2 focus-visible:ring-ring";
|
|
7
|
+
const ACCOUNT_LIST_ITEM_AVATAR = "size-14 shrink-0 rounded-control";
|
|
8
8
|
const ACCOUNT_LIST_ITEM_AVATAR_FALLBACK = "font-serif text-h2 font-light text-ink";
|
|
9
9
|
const ACCOUNT_LIST_ITEM_TEXT = "flex min-w-0 flex-1 flex-col gap-0.5";
|
|
10
10
|
const ACCOUNT_LIST_ITEM_NAME = "truncate text-body-l text-ink";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/generated/account-list.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const ACCOUNT_LIST_BASE = \"flex flex-col gap-2\";\n\nexport const ACCOUNT_LIST_ITEM_BASE = \"flex items-center gap-3 rounded-
|
|
1
|
+
{"version":3,"sources":["../../src/generated/account-list.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const ACCOUNT_LIST_BASE = \"flex flex-col gap-2\";\n\nexport const ACCOUNT_LIST_ITEM_BASE = \"flex items-center gap-3 rounded-panel border p-2.5 pr-3 transition-colors\";\n\nexport const ACCOUNT_LIST_ITEM_CHECKED = \"border-primary-border bg-selected\";\n\nexport const ACCOUNT_LIST_ITEM_UNCHECKED = \"border-border-subtle bg-muted hover:bg-hover\";\n\nexport const ACCOUNT_LIST_ITEM_DISABLED = \"opacity-(--disabled-opacity)\";\n\nexport const ACCOUNT_LIST_ITEM_RADIO = \"flex min-w-0 flex-1 items-center gap-3 rounded-panel text-left outline-none focus-visible:ring-2 focus-visible:ring-ring\";\n\nexport const ACCOUNT_LIST_ITEM_AVATAR = \"size-14 shrink-0 rounded-control\";\n\nexport const ACCOUNT_LIST_ITEM_AVATAR_FALLBACK = \"font-serif text-h2 font-light text-ink\";\n\nexport const ACCOUNT_LIST_ITEM_TEXT = \"flex min-w-0 flex-1 flex-col gap-0.5\";\n\nexport const ACCOUNT_LIST_ITEM_NAME = \"truncate text-body-l text-ink\";\n\nexport const ACCOUNT_LIST_ITEM_HANDLE = \"truncate text-body text-ink-mid\";\n\nexport const ACCOUNT_LIST_ITEM_BADGES = \"flex shrink-0 items-center gap-1.5\";\n\nexport const ACCOUNT_LIST_ITEM_FIGURE = \"shrink-0 font-serif text-figure-m font-light tabular-nums text-ink\";\n\nexport const ACCOUNT_LIST_ITEM_CHECK = \"flex size-4 shrink-0 text-primary-ink\";\n\nexport const ACCOUNT_LIST_ITEM_CHECK_HIDDEN = \"invisible\";\n\nexport const ACCOUNT_LIST_ITEM_ACTIONS = \"flex shrink-0 items-center gap-1\";\n"],"mappings":"AAEO,MAAM,oBAAoB;AAE1B,MAAM,yBAAyB;AAE/B,MAAM,4BAA4B;AAElC,MAAM,8BAA8B;AAEpC,MAAM,6BAA6B;AAEnC,MAAM,0BAA0B;AAEhC,MAAM,2BAA2B;AAEjC,MAAM,oCAAoC;AAE1C,MAAM,yBAAyB;AAE/B,MAAM,yBAAyB;AAE/B,MAAM,2BAA2B;AAEjC,MAAM,2BAA2B;AAEjC,MAAM,2BAA2B;AAEjC,MAAM,0BAA0B;AAEhC,MAAM,iCAAiC;AAEvC,MAAM,4BAA4B;","names":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
const ACCOUNT_SETTINGS_DIALOG_CONTENT = "flex max-h-[90dvh] max-w-[calc(100%-2rem)] flex-col gap-0 overflow-hidden
|
|
1
|
+
const ACCOUNT_SETTINGS_DIALOG_CONTENT = "flex max-h-[90dvh] max-w-[calc(100%-2rem)] flex-col gap-0 overflow-hidden p-0 sm:max-w-260 md:h-170 md:flex-row";
|
|
2
2
|
const ACCOUNT_SETTINGS_DIALOG_TABS = "min-h-0 flex-1 flex-col gap-0 md:flex-row";
|
|
3
3
|
const ACCOUNT_SETTINGS_DIALOG_SIDEBAR = "flex max-h-44 shrink-0 flex-col gap-2 overflow-y-auto border-b border-border-subtle bg-card p-2 md:max-h-none md:w-60 md:border-b-0 md:border-r";
|
|
4
4
|
const ACCOUNT_SETTINGS_DIALOG_LIST = "h-auto w-full flex-1 flex-col items-stretch justify-start gap-0.5 bg-transparent p-0";
|
|
5
|
-
const ACCOUNT_SETTINGS_DIALOG_ENTRY = "h-
|
|
5
|
+
const ACCOUNT_SETTINGS_DIALOG_ENTRY = "h-(--control-h-sm) w-full flex-none justify-start gap-2.5 rounded-row border-0 px-2.5 text-body font-normal text-ink-mid shadow-none data-[state=active]:bg-selected data-[state=active]:text-ink data-[state=active]:shadow-none hover:bg-hover [&_svg]:text-ink-soft";
|
|
6
6
|
const ACCOUNT_SETTINGS_DIALOG_FOOTER = "flex items-center gap-1 border-t border-border-subtle pt-2";
|
|
7
7
|
const ACCOUNT_SETTINGS_DIALOG_PANE = "relative flex min-h-0 min-w-0 flex-1 flex-col gap-5 overflow-y-auto p-6 md:p-8";
|
|
8
8
|
const ACCOUNT_SETTINGS_DIALOG_HEADING = "flex flex-col gap-1 pr-10";
|
|
@@ -10,6 +10,9 @@ const ACCOUNT_SETTINGS_DIALOG_TITLE = "font-serif text-h1 font-light text-ink";
|
|
|
10
10
|
const ACCOUNT_SETTINGS_DIALOG_DESCRIPTION = "text-body text-ink-mid";
|
|
11
11
|
const ACCOUNT_SETTINGS_DIALOG_PANEL = "flex flex-col gap-5";
|
|
12
12
|
const ACCOUNT_SETTINGS_DIALOG_CLOSE = "absolute right-4 top-4";
|
|
13
|
+
const ACCOUNT_SETTINGS_DIALOG_LABELS = {
|
|
14
|
+
"close": "Close"
|
|
15
|
+
};
|
|
13
16
|
export {
|
|
14
17
|
ACCOUNT_SETTINGS_DIALOG_CLOSE,
|
|
15
18
|
ACCOUNT_SETTINGS_DIALOG_CONTENT,
|
|
@@ -17,6 +20,7 @@ export {
|
|
|
17
20
|
ACCOUNT_SETTINGS_DIALOG_ENTRY,
|
|
18
21
|
ACCOUNT_SETTINGS_DIALOG_FOOTER,
|
|
19
22
|
ACCOUNT_SETTINGS_DIALOG_HEADING,
|
|
23
|
+
ACCOUNT_SETTINGS_DIALOG_LABELS,
|
|
20
24
|
ACCOUNT_SETTINGS_DIALOG_LIST,
|
|
21
25
|
ACCOUNT_SETTINGS_DIALOG_PANE,
|
|
22
26
|
ACCOUNT_SETTINGS_DIALOG_PANEL,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/generated/account-settings-dialog.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const ACCOUNT_SETTINGS_DIALOG_CONTENT = \"flex max-h-[90dvh] max-w-[calc(100%-2rem)] flex-col gap-0 overflow-hidden
|
|
1
|
+
{"version":3,"sources":["../../src/generated/account-settings-dialog.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const ACCOUNT_SETTINGS_DIALOG_CONTENT = \"flex max-h-[90dvh] max-w-[calc(100%-2rem)] flex-col gap-0 overflow-hidden p-0 sm:max-w-260 md:h-170 md:flex-row\";\n\nexport const ACCOUNT_SETTINGS_DIALOG_TABS = \"min-h-0 flex-1 flex-col gap-0 md:flex-row\";\n\nexport const ACCOUNT_SETTINGS_DIALOG_SIDEBAR = \"flex max-h-44 shrink-0 flex-col gap-2 overflow-y-auto border-b border-border-subtle bg-card p-2 md:max-h-none md:w-60 md:border-b-0 md:border-r\";\n\nexport const ACCOUNT_SETTINGS_DIALOG_LIST = \"h-auto w-full flex-1 flex-col items-stretch justify-start gap-0.5 bg-transparent p-0\";\n\nexport const ACCOUNT_SETTINGS_DIALOG_ENTRY = \"h-(--control-h-sm) w-full flex-none justify-start gap-2.5 rounded-row border-0 px-2.5 text-body font-normal text-ink-mid shadow-none data-[state=active]:bg-selected data-[state=active]:text-ink data-[state=active]:shadow-none hover:bg-hover [&_svg]:text-ink-soft\";\n\nexport const ACCOUNT_SETTINGS_DIALOG_FOOTER = \"flex items-center gap-1 border-t border-border-subtle pt-2\";\n\nexport const ACCOUNT_SETTINGS_DIALOG_PANE = \"relative flex min-h-0 min-w-0 flex-1 flex-col gap-5 overflow-y-auto p-6 md:p-8\";\n\nexport const ACCOUNT_SETTINGS_DIALOG_HEADING = \"flex flex-col gap-1 pr-10\";\n\nexport const ACCOUNT_SETTINGS_DIALOG_TITLE = \"font-serif text-h1 font-light text-ink\";\n\nexport const ACCOUNT_SETTINGS_DIALOG_DESCRIPTION = \"text-body text-ink-mid\";\n\nexport const ACCOUNT_SETTINGS_DIALOG_PANEL = \"flex flex-col gap-5\";\n\nexport const ACCOUNT_SETTINGS_DIALOG_CLOSE = \"absolute right-4 top-4\";\n\nexport const ACCOUNT_SETTINGS_DIALOG_LABELS = {\n \"close\": \"Close\",\n} as const;\n"],"mappings":"AAEO,MAAM,kCAAkC;AAExC,MAAM,+BAA+B;AAErC,MAAM,kCAAkC;AAExC,MAAM,+BAA+B;AAErC,MAAM,gCAAgC;AAEtC,MAAM,iCAAiC;AAEvC,MAAM,+BAA+B;AAErC,MAAM,kCAAkC;AAExC,MAAM,gCAAgC;AAEtC,MAAM,sCAAsC;AAE5C,MAAM,gCAAgC;AAEtC,MAAM,gCAAgC;AAEtC,MAAM,iCAAiC;AAAA,EAC5C,SAAS;AACX;","names":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const ALERT_DIALOG_OVERLAY = "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 duration-200 data-[state=closed]:fill-mode-forwards data-[state=closed]:pointer-events-none fixed inset-0 z-50 bg-scrim";
|
|
2
|
-
const ALERT_DIALOG_CONTENT = "bg-
|
|
2
|
+
const ALERT_DIALOG_CONTENT = "bg-popover data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-panel border border-border p-6 shadow-lg duration-200 data-[state=closed]:fill-mode-forwards outline-hidden sm:max-w-lg";
|
|
3
3
|
const ALERT_DIALOG_HEADER = "flex flex-col gap-2 text-center sm:text-left";
|
|
4
4
|
const ALERT_DIALOG_FOOTER = "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end";
|
|
5
5
|
const ALERT_DIALOG_TITLE = "text-lg font-semibold";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/generated/alert-dialog.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const ALERT_DIALOG_OVERLAY = \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 duration-200 data-[state=closed]:fill-mode-forwards data-[state=closed]:pointer-events-none fixed inset-0 z-50 bg-scrim\";\n\nexport const ALERT_DIALOG_CONTENT = \"bg-
|
|
1
|
+
{"version":3,"sources":["../../src/generated/alert-dialog.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const ALERT_DIALOG_OVERLAY = \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 duration-200 data-[state=closed]:fill-mode-forwards data-[state=closed]:pointer-events-none fixed inset-0 z-50 bg-scrim\";\n\nexport const ALERT_DIALOG_CONTENT = \"bg-popover data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-panel border border-border p-6 shadow-lg duration-200 data-[state=closed]:fill-mode-forwards outline-hidden sm:max-w-lg\";\n\nexport const ALERT_DIALOG_HEADER = \"flex flex-col gap-2 text-center sm:text-left\";\n\nexport const ALERT_DIALOG_FOOTER = \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\";\n\nexport const ALERT_DIALOG_TITLE = \"text-lg font-semibold\";\n\nexport const ALERT_DIALOG_DESCRIPTION = \"text-ink-soft text-sm\";\n"],"mappings":"AAEO,MAAM,uBAAuB;AAE7B,MAAM,uBAAuB;AAE7B,MAAM,sBAAsB;AAE5B,MAAM,sBAAsB;AAE5B,MAAM,qBAAqB;AAE3B,MAAM,2BAA2B;","names":[]}
|
package/dist/generated/alert.js
CHANGED
|
@@ -1,16 +1,9 @@
|
|
|
1
|
-
const ALERT_BASE = "relative w-full rounded-
|
|
2
|
-
const alertVariants = {
|
|
3
|
-
"neutral": "bg-card text-ink border-border",
|
|
4
|
-
"destructive": "text-accent-error bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-ink-mid",
|
|
5
|
-
"success": "text-positive-ink bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-ink-mid",
|
|
6
|
-
"info": "text-accent-info-ink bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-ink-mid"
|
|
7
|
-
};
|
|
1
|
+
const ALERT_BASE = "relative w-full rounded-panel border border-(color:--tone-edge) bg-card bg-[image:linear-gradient(var(--tone-wash),var(--tone-wash))] px-4 py-3 text-sm text-(color:--tone-ink) grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current";
|
|
8
2
|
const ALERT_TITLE = "col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight";
|
|
9
|
-
const ALERT_DESCRIPTION = "text-ink-
|
|
3
|
+
const ALERT_DESCRIPTION = "text-ink-mid col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed";
|
|
10
4
|
export {
|
|
11
5
|
ALERT_BASE,
|
|
12
6
|
ALERT_DESCRIPTION,
|
|
13
|
-
ALERT_TITLE
|
|
14
|
-
alertVariants
|
|
7
|
+
ALERT_TITLE
|
|
15
8
|
};
|
|
16
9
|
//# sourceMappingURL=alert.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/generated/alert.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const ALERT_BASE = \"relative w-full rounded-
|
|
1
|
+
{"version":3,"sources":["../../src/generated/alert.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const ALERT_BASE = \"relative w-full rounded-panel border border-(color:--tone-edge) bg-card bg-[image:linear-gradient(var(--tone-wash),var(--tone-wash))] px-4 py-3 text-sm text-(color:--tone-ink) grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\";\n\nexport const ALERT_TITLE = \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\";\n\nexport const ALERT_DESCRIPTION = \"text-ink-mid col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\";\n"],"mappings":"AAEO,MAAM,aAAa;AAEnB,MAAM,cAAc;AAEpB,MAAM,oBAAoB;","names":[]}
|
package/dist/generated/aside.js
CHANGED
|
@@ -12,19 +12,26 @@ const ASIDE_PANEL_SHEET = "w-full gap-0 border-border-strong bg-card p-0 sm:max-
|
|
|
12
12
|
const ASIDE_PANEL_WIDE_ONLY = "hidden md:flex";
|
|
13
13
|
const ASIDE_PANEL_WIDE_ONLY_WRAPPER = "hidden md:contents";
|
|
14
14
|
const ASIDE_PANEL_NARROW_ONLY = "contents md:hidden";
|
|
15
|
+
const ASIDE_HEADER_LABELS = {
|
|
16
|
+
"back": "Back",
|
|
17
|
+
"close": "Close"
|
|
18
|
+
};
|
|
15
19
|
const asidePanelSideClasses = {
|
|
16
20
|
"left": "border-r border-border",
|
|
17
21
|
"right": "border-l border-border"
|
|
18
22
|
};
|
|
23
|
+
const ASIDE_PANEL_MODES = ["docked", "overlay"];
|
|
19
24
|
export {
|
|
20
25
|
ASIDE_BODY,
|
|
21
26
|
ASIDE_FOOTER,
|
|
22
27
|
ASIDE_HEADER_BACK_ICON,
|
|
23
28
|
ASIDE_HEADER_BASE,
|
|
24
29
|
ASIDE_HEADER_CLOSE_ICON,
|
|
30
|
+
ASIDE_HEADER_LABELS,
|
|
25
31
|
ASIDE_HEADER_TITLE,
|
|
26
32
|
ASIDE_PANEL_DOCKED,
|
|
27
33
|
ASIDE_PANEL_DRAWER,
|
|
34
|
+
ASIDE_PANEL_MODES,
|
|
28
35
|
ASIDE_PANEL_NARROW_ONLY,
|
|
29
36
|
ASIDE_PANEL_SHEET,
|
|
30
37
|
ASIDE_PANEL_WIDE_ONLY,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/generated/aside.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const ASIDE_HEADER_BASE = \"flex h-11 shrink-0 items-center gap-1.5 border-b border-border bg-card pl-3 pr-2\";\n\nexport const ASIDE_HEADER_TITLE = \"min-w-0 flex-1 truncate text-body font-medium text-ink\";\n\nexport const ASIDE_HEADER_BACK_ICON = \"size-4 rotate-180\";\n\nexport const ASIDE_HEADER_CLOSE_ICON = \"size-4\";\n\nexport const ASIDE_RAIL_BASE = \"flex w-11 shrink-0 flex-col items-center gap-1 border-l border-border bg-card px-1.5 py-2\";\n\nexport const ASIDE_RAIL_SPACER = \"flex-1\";\n\nexport const ASIDE_BODY = \"min-h-0 flex-1 overflow-y-auto\";\n\nexport const ASIDE_FOOTER = \"flex shrink-0 items-center justify-end gap-2 border-t border-border bg-card px-4 py-3\";\n\nexport const ASIDE_PANEL_DOCKED = \"flex h-full w-95 shrink-0 flex-col bg-card\";\n\nexport const ASIDE_PANEL_DRAWER = \"flex max-h-[85dvh] flex-col bg-card\";\n\nexport const ASIDE_PANEL_SHEET = \"w-full gap-0 border-border-strong bg-card p-0 sm:max-w-105 [&>[data-slot=sheet-close]]:hidden\";\n\nexport const ASIDE_PANEL_WIDE_ONLY = \"hidden md:flex\";\n\nexport const ASIDE_PANEL_WIDE_ONLY_WRAPPER = \"hidden md:contents\";\n\nexport const ASIDE_PANEL_NARROW_ONLY = \"contents md:hidden\";\n\nexport const asidePanelSideClasses = {\n \"left\": \"border-r border-border\",\n \"right\": \"border-l border-border\",\n} as const;\nexport type AsidePanelSide = keyof typeof asidePanelSideClasses;\n"],"mappings":"AAEO,MAAM,oBAAoB;AAE1B,MAAM,qBAAqB;AAE3B,MAAM,yBAAyB;AAE/B,MAAM,0BAA0B;AAEhC,MAAM,kBAAkB;AAExB,MAAM,oBAAoB;AAE1B,MAAM,aAAa;AAEnB,MAAM,eAAe;AAErB,MAAM,qBAAqB;AAE3B,MAAM,qBAAqB;AAE3B,MAAM,oBAAoB;AAE1B,MAAM,wBAAwB;AAE9B,MAAM,gCAAgC;AAEtC,MAAM,0BAA0B;AAEhC,MAAM,wBAAwB;AAAA,EACnC,QAAQ;AAAA,EACR,SAAS;AACX;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/generated/aside.ts"],"sourcesContent":["// AUTO-GENERATED by `nix run .#gen` — do not edit.\n\nexport const ASIDE_HEADER_BASE = \"flex h-11 shrink-0 items-center gap-1.5 border-b border-border bg-card pl-3 pr-2\";\n\nexport const ASIDE_HEADER_TITLE = \"min-w-0 flex-1 truncate text-body font-medium text-ink\";\n\nexport const ASIDE_HEADER_BACK_ICON = \"size-4 rotate-180\";\n\nexport const ASIDE_HEADER_CLOSE_ICON = \"size-4\";\n\nexport const ASIDE_RAIL_BASE = \"flex w-11 shrink-0 flex-col items-center gap-1 border-l border-border bg-card px-1.5 py-2\";\n\nexport const ASIDE_RAIL_SPACER = \"flex-1\";\n\nexport const ASIDE_BODY = \"min-h-0 flex-1 overflow-y-auto\";\n\nexport const ASIDE_FOOTER = \"flex shrink-0 items-center justify-end gap-2 border-t border-border bg-card px-4 py-3\";\n\nexport const ASIDE_PANEL_DOCKED = \"flex h-full w-95 shrink-0 flex-col bg-card\";\n\nexport const ASIDE_PANEL_DRAWER = \"flex max-h-[85dvh] flex-col bg-card\";\n\nexport const ASIDE_PANEL_SHEET = \"w-full gap-0 border-border-strong bg-card p-0 sm:max-w-105 [&>[data-slot=sheet-close]]:hidden\";\n\nexport const ASIDE_PANEL_WIDE_ONLY = \"hidden md:flex\";\n\nexport const ASIDE_PANEL_WIDE_ONLY_WRAPPER = \"hidden md:contents\";\n\nexport const ASIDE_PANEL_NARROW_ONLY = \"contents md:hidden\";\n\nexport const ASIDE_HEADER_LABELS = {\n \"back\": \"Back\",\n \"close\": \"Close\",\n} as const;\n\nexport const asidePanelSideClasses = {\n \"left\": \"border-r border-border\",\n \"right\": \"border-l border-border\",\n} as const;\nexport type AsidePanelSide = keyof typeof asidePanelSideClasses;\n\nexport const ASIDE_PANEL_MODES = [\"docked\", \"overlay\"] as const;\nexport type AsidePanelMode = (typeof ASIDE_PANEL_MODES)[number];\n"],"mappings":"AAEO,MAAM,oBAAoB;AAE1B,MAAM,qBAAqB;AAE3B,MAAM,yBAAyB;AAE/B,MAAM,0BAA0B;AAEhC,MAAM,kBAAkB;AAExB,MAAM,oBAAoB;AAE1B,MAAM,aAAa;AAEnB,MAAM,eAAe;AAErB,MAAM,qBAAqB;AAE3B,MAAM,qBAAqB;AAE3B,MAAM,oBAAoB;AAE1B,MAAM,wBAAwB;AAE9B,MAAM,gCAAgC;AAEtC,MAAM,0BAA0B;AAEhC,MAAM,sBAAsB;AAAA,EACjC,QAAQ;AAAA,EACR,SAAS;AACX;AAEO,MAAM,wBAAwB;AAAA,EACnC,QAAQ;AAAA,EACR,SAAS;AACX;AAGO,MAAM,oBAAoB,CAAC,UAAU,SAAS;","names":[]}
|
package/dist/generated/badge.js
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
const BADGE_BASE = "inline-flex h-5 items-center justify-center rounded-
|
|
2
|
-
const badgeVariants = {
|
|
3
|
-
"neutral": "border-chip-neutral-border bg-chip-neutral-bg text-ink-mid [a&]:hover:bg-active",
|
|
4
|
-
"primary": "border-chip-primary-border bg-chip-primary-bg text-primary-ink [a&]:hover:bg-hover",
|
|
5
|
-
"positive": "border-chip-positive-border bg-chip-positive-bg text-positive-ink [a&]:hover:bg-hover",
|
|
6
|
-
"info": "border-chip-info-border bg-chip-info-bg text-accent-info-ink [a&]:hover:bg-hover",
|
|
7
|
-
"warn": "border-chip-warn-border bg-chip-warn-bg text-accent-warn [a&]:hover:bg-hover",
|
|
8
|
-
"error": "border-chip-error-border bg-chip-error-bg text-accent-error [a&]:hover:bg-hover"
|
|
9
|
-
};
|
|
1
|
+
const BADGE_BASE = "inline-flex h-5 items-center justify-center rounded-chip border px-1.5 text-caption border-(color:--tone-edge) bg-(color:--tone-fill) text-(color:--tone-ink) font-medium w-fit whitespace-nowrap shrink-0 gap-1 overflow-hidden [&>svg]:size-3 [&>svg]:pointer-events-none transition-colors outline-none [a&]:hover:bg-[image:linear-gradient(var(--hover),var(--hover))] aria-invalid:border-accent-error focus-visible:ring-0 focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring";
|
|
10
2
|
export {
|
|
11
|
-
BADGE_BASE
|
|
12
|
-
badgeVariants
|
|
3
|
+
BADGE_BASE
|
|
13
4
|
};
|
|
14
5
|
//# sourceMappingURL=badge.js.map
|