@aeolus-fleet/common 0.35.0 → 0.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +3 -3
  2. package/dist/{header/apps.d.ts → rules/app-switcher.d.ts} +2 -5
  3. package/dist/{header/apps.js → rules/app-switcher.js} +1 -6
  4. package/dist/rules/app-switcher.js.map +1 -0
  5. package/dist/rules/index.d.ts +4 -1
  6. package/dist/rules/index.js +4 -1
  7. package/dist/rules/index.js.map +1 -1
  8. package/dist/rules/page-size.d.ts +7 -0
  9. package/dist/rules/page-size.js +7 -0
  10. package/dist/rules/page-size.js.map +1 -1
  11. package/dist/schemas/content-type.d.ts +2 -0
  12. package/dist/schemas/content-type.js +6 -0
  13. package/dist/schemas/content-type.js.map +1 -0
  14. package/dist/schemas/delivery.d.ts +91 -0
  15. package/dist/schemas/delivery.js +17 -0
  16. package/dist/schemas/delivery.js.map +1 -1
  17. package/dist/schemas/index.d.ts +2 -0
  18. package/dist/schemas/index.js +2 -0
  19. package/dist/schemas/index.js.map +1 -1
  20. package/dist/schemas/notice-message.d.ts +20 -0
  21. package/dist/schemas/notice-message.js +26 -0
  22. package/dist/schemas/notice-message.js.map +1 -0
  23. package/dist/schemas/page.d.ts +1 -1
  24. package/dist/schemas/page.js +1 -1
  25. package/dist/schemas/page.js.map +1 -1
  26. package/dist/schemas/question.js +1 -5
  27. package/dist/schemas/question.js.map +1 -1
  28. package/dist/schemas/step.d.ts +57 -0
  29. package/dist/schemas/step.js +54 -0
  30. package/dist/schemas/step.js.map +1 -0
  31. package/package.json +4 -44
  32. package/dist/header/app-header.d.ts +0 -27
  33. package/dist/header/app-header.js +0 -18
  34. package/dist/header/app-header.js.map +0 -1
  35. package/dist/header/app-switcher.d.ts +0 -20
  36. package/dist/header/app-switcher.js +0 -57
  37. package/dist/header/app-switcher.js.map +0 -1
  38. package/dist/header/apps.js.map +0 -1
  39. package/dist/header/atoms/avatar.d.ts +0 -16
  40. package/dist/header/atoms/avatar.js +0 -44
  41. package/dist/header/atoms/avatar.js.map +0 -1
  42. package/dist/header/atoms/button.d.ts +0 -22
  43. package/dist/header/atoms/button.js +0 -48
  44. package/dist/header/atoms/button.js.map +0 -1
  45. package/dist/header/atoms/dialog-surface.d.ts +0 -19
  46. package/dist/header/atoms/dialog-surface.js +0 -32
  47. package/dist/header/atoms/dialog-surface.js.map +0 -1
  48. package/dist/header/atoms/dialog.d.ts +0 -19
  49. package/dist/header/atoms/dialog.js +0 -37
  50. package/dist/header/atoms/dialog.js.map +0 -1
  51. package/dist/header/atoms/dropdown-menu.d.ts +0 -21
  52. package/dist/header/atoms/dropdown-menu.js +0 -42
  53. package/dist/header/atoms/dropdown-menu.js.map +0 -1
  54. package/dist/header/atoms/kbd.d.ts +0 -7
  55. package/dist/header/atoms/kbd.js +0 -11
  56. package/dist/header/atoms/kbd.js.map +0 -1
  57. package/dist/header/atoms/sheet.d.ts +0 -23
  58. package/dist/header/atoms/sheet.js +0 -52
  59. package/dist/header/atoms/sheet.js.map +0 -1
  60. package/dist/header/atoms/tooltip.d.ts +0 -10
  61. package/dist/header/atoms/tooltip.js +0 -24
  62. package/dist/header/atoms/tooltip.js.map +0 -1
  63. package/dist/header/avatar-entry.d.ts +0 -21
  64. package/dist/header/avatar-entry.js +0 -6
  65. package/dist/header/avatar-entry.js.map +0 -1
  66. package/dist/header/avatar-menu.d.ts +0 -43
  67. package/dist/header/avatar-menu.js +0 -111
  68. package/dist/header/avatar-menu.js.map +0 -1
  69. package/dist/header/class-names.d.ts +0 -3
  70. package/dist/header/class-names.js +0 -29
  71. package/dist/header/class-names.js.map +0 -1
  72. package/dist/header/command-palette.d.ts +0 -44
  73. package/dist/header/command-palette.js +0 -77
  74. package/dist/header/command-palette.js.map +0 -1
  75. package/dist/header/index.d.ts +0 -23
  76. package/dist/header/index.js +0 -24
  77. package/dist/header/index.js.map +0 -1
  78. package/dist/header/sign-in-background.d.ts +0 -10
  79. package/dist/header/sign-in-background.js +0 -48
  80. package/dist/header/sign-in-background.js.map +0 -1
  81. package/dist/header/sign-in-backgrounds.d.ts +0 -40
  82. package/dist/header/sign-in-backgrounds.js +0 -135
  83. package/dist/header/sign-in-backgrounds.js.map +0 -1
  84. package/dist/header/tokens.css +0 -154
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aeolus-fleet/common",
3
- "version": "0.35.0",
4
- "description": "Shared schemas and ids for Aeolus packages, and the header every Aeolus web app shows.",
3
+ "version": "0.36.0",
4
+ "description": "Shared schemas and ids for Aeolus packages.",
5
5
  "keywords": [
6
6
  "aeolus"
7
7
  ],
@@ -24,58 +24,18 @@
24
24
  "./rules": {
25
25
  "types": "./dist/rules/index.d.ts",
26
26
  "default": "./dist/rules/index.js"
27
- },
28
- "./header": {
29
- "types": "./dist/header/index.d.ts",
30
- "default": "./dist/header/index.js"
31
- },
32
- "./header/tokens.css": "./dist/header/tokens.css"
27
+ }
33
28
  },
34
29
  "files": [
35
30
  "dist"
36
31
  ],
37
32
  "scripts": {
38
- "build": "tsc --project tsconfig.build.json && cp src/header/tokens.css dist/header/tokens.css",
33
+ "build": "tsc --project tsconfig.build.json",
39
34
  "typecheck": "tsc --project tsconfig.json",
40
35
  "prepack": "cp ../../LICENSE LICENSE",
41
36
  "postpack": "rm LICENSE"
42
37
  },
43
38
  "dependencies": {
44
39
  "zod": "^4.6.5"
45
- },
46
- "peerDependencies": {
47
- "@base-ui/react": "^1.8.0",
48
- "class-variance-authority": "^0.7.1",
49
- "clsx": "^2.1.1",
50
- "lucide-react": "^1.51.0",
51
- "react": "^19.3.0",
52
- "react-dom": "^19.3.0",
53
- "tailwind-merge": "^3.7.0"
54
- },
55
- "peerDependenciesMeta": {
56
- "@base-ui/react": {
57
- "optional": true
58
- },
59
- "class-variance-authority": {
60
- "optional": true
61
- },
62
- "clsx": {
63
- "optional": true
64
- },
65
- "lucide-react": {
66
- "optional": true
67
- },
68
- "react": {
69
- "optional": true
70
- },
71
- "react-dom": {
72
- "optional": true
73
- },
74
- "tailwind-merge": {
75
- "optional": true
76
- }
77
- },
78
- "devDependencies": {
79
- "@storybook/nextjs-vite": "^10.6.1"
80
40
  }
81
41
  }
@@ -1,27 +0,0 @@
1
- import type { ReactNode } from 'react';
2
- import type { AppSwitcherModel } from './apps.js';
3
- import { type AvatarMenuProps } from './avatar-menu.js';
4
- interface AppHeaderProps {
5
- /** Undefined while the fleet in view is not known yet: the title's shape stands in. */
6
- switcher: AppSwitcherModel | undefined;
7
- /** The avatar menu, always last. */
8
- account: AvatarMenuProps;
9
- /** Opens the command palette; without it the search trigger is not shown. */
10
- onSearch?: () => void;
11
- /** The search trigger's words: "Search ships or jump to". */
12
- searchLabel?: string;
13
- /** The app's own part after the title, such as a breadcrumb. */
14
- children?: ReactNode;
15
- /** The app's own controls before the search, such as a live status or Compose. */
16
- actions?: ReactNode;
17
- className?: string;
18
- }
19
- /**
20
- * The header every Aeolus web app shows on desktop (header design H1 to H13),
21
- * 56 px: the switcher in the title ("Acme / Console ▾"), the app's own part
22
- * after it, then the app's controls, the command palette's search trigger
23
- * with its ⌘K hint, and the avatar menu. Each app's own bar takes the
24
- * header on phone, with the switcher compact (H6).
25
- */
26
- export declare function AppHeader({ switcher, account, onSearch, searchLabel, children, actions, className }: AppHeaderProps): import("react").JSX.Element;
27
- export {};
@@ -1,18 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Search } from 'lucide-react';
3
- import { AppSwitcher } from './app-switcher.js';
4
- import { Button } from './atoms/button.js';
5
- import { Kbd } from './atoms/kbd.js';
6
- import { AvatarMenu } from './avatar-menu.js';
7
- import { classNames } from './class-names.js';
8
- /**
9
- * The header every Aeolus web app shows on desktop (header design H1 to H13),
10
- * 56 px: the switcher in the title ("Acme / Console ▾"), the app's own part
11
- * after it, then the app's controls, the command palette's search trigger
12
- * with its ⌘K hint, and the avatar menu. Each app's own bar takes the
13
- * header on phone, with the switcher compact (H6).
14
- */
15
- export function AppHeader({ switcher, account, onSearch, searchLabel = 'Search or jump to', children, actions, className }) {
16
- return (_jsxs("header", { "data-slot": "app-header", className: classNames('sticky top-0 z-30 flex h-(--size-header) shrink-0 items-center justify-between gap-4 border-b border-border bg-background px-6', className), children: [_jsxs("div", { className: "flex min-w-0 items-center gap-3", children: [switcher === undefined ? (_jsx("span", { "data-testid": "app-switcher-loading", "aria-hidden": true, className: "h-4 w-36 shrink-0 animate-pulse rounded bg-muted motion-reduce:animate-none" })) : (_jsx(AppSwitcher, { switcher: switcher, layout: "full", className: "shrink-0" })), children] }), _jsxs("div", { className: "flex shrink-0 items-center gap-3", children: [actions, onSearch ? (_jsxs(Button, { size: "sm", icon: _jsx(Search, { "aria-hidden": true }), "data-testid": "header-search", className: "w-60 justify-start font-normal text-muted-foreground max-lg:w-auto", onClick: onSearch, children: [_jsx("span", { className: "grow text-left max-lg:sr-only", children: searchLabel }), _jsx(Kbd, { children: "\u2318K" })] })) : null, _jsx(AvatarMenu, { ...account })] })] }));
17
- }
18
- //# sourceMappingURL=app-header.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-header.js","sourceRoot":"","sources":["../../src/header/app-header.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,UAAU,EAAwB,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAkB9C;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,GAAG,mBAAmB,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAkB;IACxI,OAAO,CACL,+BACY,YAAY,EACtB,SAAS,EAAE,UAAU,CAAC,gIAAgI,EAAE,SAAS,CAAC,aAElK,eAAK,SAAS,EAAC,iCAAiC,aAC7C,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CACxB,8BAAkB,sBAAsB,uBAAa,SAAS,EAAC,6EAA6E,GAAG,CAChJ,CAAC,CAAC,CAAC,CACF,KAAC,WAAW,IAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,EAAC,SAAS,EAAC,UAAU,GAAG,CACvE,EACA,QAAQ,IACL,EACN,eAAK,SAAS,EAAC,kCAAkC,aAC9C,OAAO,EACP,QAAQ,CAAC,CAAC,CAAC,CACV,MAAC,MAAM,IAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAE,KAAC,MAAM,0BAAe,iBAAc,eAAe,EAAC,SAAS,EAAC,oEAAoE,EAAC,OAAO,EAAE,QAAQ,aAC1K,eAAM,SAAS,EAAC,+BAA+B,YAAE,WAAW,GAAQ,EACpE,KAAC,GAAG,0BAAS,IACN,CACV,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,UAAU,OAAK,OAAO,GAAI,IACvB,IACC,CACV,CAAC;AACJ,CAAC"}
@@ -1,20 +0,0 @@
1
- import type { AppSwitcherModel } from './apps.js';
2
- interface AppSwitcherProps {
3
- switcher: AppSwitcherModel;
4
- /**
5
- * full: "Acme / Console ▾", the fleet part switching fleet and the app part
6
- * switching app, each a menu. compact (phone, H6): "Console ▾", one bottom
7
- * Sheet with the fleets, then the apps.
8
- */
9
- layout: 'full' | 'compact';
10
- className?: string;
11
- }
12
- /**
13
- * The switcher in the title (header design H1, H6, H8, H9): the fleet in view
14
- * and the app open. Choosing another fleet or app follows its link; the
15
- * choice says "Opening ..." with a spinner at once, and the others wait,
16
- * until the browser leaves. Without anywhere else to go it is plain text,
17
- * with no ▾.
18
- */
19
- export declare function AppSwitcher({ switcher, layout, className }: AppSwitcherProps): import("react").JSX.Element;
20
- export {};
@@ -1,57 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { Check, ChevronDown, LoaderCircle } from 'lucide-react';
4
- import { useState } from 'react';
5
- import { Button } from './atoms/button.js';
6
- import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuTrigger } from './atoms/dropdown-menu.js';
7
- import { Sheet, SheetClose, SheetContent, SheetTitle, SheetTrigger } from './atoms/sheet.js';
8
- import { classNames } from './class-names.js';
9
- const triggerClass = 'inline-flex min-w-0 items-center gap-1 rounded-md px-1.5 py-1 text-body font-semibold text-foreground outline-none transition-colors duration-(--duration-fast) hover:bg-accent focus-visible:outline-2 focus-visible:outline-ring aria-expanded:bg-accent disabled:opacity-60';
10
- /** A choice's mark: a spinner while it opens, a check on the one in view. */
11
- function Mark({ isCurrent, isOpening }) {
12
- if (isOpening) {
13
- return _jsx(LoaderCircle, { "aria-hidden": true, className: "ml-auto animate-spin motion-reduce:animate-none" });
14
- }
15
- return isCurrent ? _jsx(Check, { "aria-hidden": true, className: "ml-auto" }) : null;
16
- }
17
- /** One choice in a desktop menu: a link, with "Opening" while the browser goes there. */
18
- function MenuChoice({ url, name, isCurrent, opening, onOpen, testId }) {
19
- const isOpening = opening?.url === url && opening.name === name;
20
- return (_jsxs(DropdownMenuItem, { "data-testid": testId, "data-current": isCurrent || undefined, disabled: opening !== undefined && !isOpening, closeOnClick: false, render: (props) => (_jsx("a", { ...props, href: url, "aria-current": isCurrent ? 'page' : undefined, onClick: (event) => {
21
- props.onClick?.(event);
22
- onOpen({ url, name });
23
- }, children: props.children })), children: [_jsx("span", { className: "min-w-0 truncate", children: isOpening ? `Opening ${name}` : name }), _jsx(Mark, { isCurrent: isCurrent, isOpening: isOpening })] }));
24
- }
25
- /** One choice in the phone's Sheet: a 44 px link, with "Opening" while the browser goes there. */
26
- function SheetChoice({ url, name, isCurrent, opening, onOpen, testId }) {
27
- const isOpening = opening?.url === url && opening.name === name;
28
- return (_jsxs("a", { href: url, "data-testid": testId, "aria-current": isCurrent ? 'page' : undefined, "aria-disabled": opening !== undefined && !isOpening ? true : undefined, onClick: (event) => {
29
- if (opening !== undefined) {
30
- event.preventDefault();
31
- return;
32
- }
33
- onOpen({ url, name });
34
- }, className: "flex h-(--size-control-touch) items-center gap-2.5 rounded-md px-2 text-body-touch text-foreground outline-none focus-visible:outline-2 focus-visible:outline-ring aria-disabled:opacity-60 [&_svg]:size-(--size-icon) [&_svg]:text-muted-foreground", children: [_jsx("span", { className: "min-w-0 truncate", children: isOpening ? `Opening ${name}` : name }), _jsx(Mark, { isCurrent: isCurrent, isOpening: isOpening })] }));
35
- }
36
- function SheetGroup({ label, children }) {
37
- return (_jsxs("div", { role: "group", "aria-label": label, className: "flex flex-col gap-0.5", children: [_jsx("p", { className: "px-2 text-caption font-medium text-muted-foreground", children: label }), children] }));
38
- }
39
- /**
40
- * The switcher in the title (header design H1, H6, H8, H9): the fleet in view
41
- * and the app open. Choosing another fleet or app follows its link; the
42
- * choice says "Opening ..." with a spinner at once, and the others wait,
43
- * until the browser leaves. Without anywhere else to go it is plain text,
44
- * with no ▾.
45
- */
46
- export function AppSwitcher({ switcher, layout, className }) {
47
- const [opening, setOpening] = useState(undefined);
48
- const { fleet, appLabel, fleets, apps, canSwitch } = switcher;
49
- if (!canSwitch) {
50
- return (_jsxs("p", { "data-testid": "app-switcher", className: classNames('flex min-w-0 items-center gap-1 px-1.5 text-body font-semibold text-foreground', className), children: [layout === 'full' ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "truncate", children: fleet.name }), _jsx("span", { "aria-hidden": true, className: "text-muted-foreground", children: "/" })] })) : null, _jsx("span", { className: "truncate", children: appLabel })] }));
51
- }
52
- if (layout === 'compact') {
53
- return (_jsxs(Sheet, { children: [_jsxs(SheetTrigger, { "data-testid": "app-switcher", "aria-label": `Switch fleet or app: ${fleet.name}, ${appLabel}`, className: classNames(triggerClass, 'text-title-touch', className), children: [_jsx("span", { className: "truncate", children: appLabel }), opening === undefined ? _jsx(ChevronDown, { "aria-hidden": true, className: "size-(--size-icon) shrink-0 text-muted-foreground" }) : _jsx(LoaderCircle, { "aria-hidden": true, className: "size-(--size-icon) shrink-0 animate-spin motion-reduce:animate-none" })] }), _jsxs(SheetContent, { side: "bottom", "data-testid": "app-switcher-sheet", className: "gap-3", children: [_jsx(SheetTitle, { className: "sr-only", children: "Switch fleet or app" }), _jsx(SheetGroup, { label: "Fleets", children: fleets.map((choice) => (_jsx(SheetChoice, { url: choice.url, name: choice.name, isCurrent: choice.isCurrent, opening: opening, onOpen: setOpening, testId: "app-switcher-fleet" }, choice.id))) }), _jsx(SheetGroup, { label: "Apps", children: apps.map((choice) => (_jsx(SheetChoice, { url: choice.url, name: choice.label, isCurrent: choice.isCurrent, opening: opening, onOpen: setOpening, testId: "app-switcher-app" }, choice.app))) }), _jsx(SheetClose, { render: _jsx(Button, { size: "touch", className: "w-full" }), children: "Cancel" })] })] }));
54
- }
55
- return (_jsxs("nav", { "aria-label": "Fleet and app", "data-testid": "app-switcher", className: classNames('flex min-w-0 items-center gap-0.5', className), children: [_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { "data-testid": "app-switcher-fleets", "aria-label": `Fleet: ${fleet.name}. Switch fleet`, className: triggerClass, children: _jsx("span", { className: "truncate", children: fleet.name }) }), _jsx(DropdownMenuContent, { align: "start", className: "w-56", children: _jsxs(DropdownMenuGroup, { children: [_jsx(DropdownMenuLabel, { children: "Fleets" }), fleets.map((choice) => (_jsx(MenuChoice, { url: choice.url, name: choice.name, isCurrent: choice.isCurrent, opening: opening, onOpen: setOpening, testId: "app-switcher-fleet" }, choice.id)))] }) })] }), _jsx("span", { "aria-hidden": true, className: "text-muted-foreground", children: "/" }), _jsxs(DropdownMenu, { children: [_jsxs(DropdownMenuTrigger, { "data-testid": "app-switcher-apps", "aria-label": `App: ${appLabel}. Switch app`, className: triggerClass, children: [_jsx("span", { className: "truncate", children: appLabel }), opening === undefined ? _jsx(ChevronDown, { "aria-hidden": true, className: "size-(--size-icon-sm) shrink-0 text-muted-foreground" }) : _jsx(LoaderCircle, { "aria-hidden": true, className: "size-(--size-icon-sm) shrink-0 animate-spin motion-reduce:animate-none" })] }), _jsx(DropdownMenuContent, { align: "start", className: "w-56", children: _jsxs(DropdownMenuGroup, { children: [_jsx(DropdownMenuLabel, { children: "Apps" }), apps.map((choice) => (_jsx(MenuChoice, { url: choice.url, name: choice.label, isCurrent: choice.isCurrent, opening: opening, onOpen: setOpening, testId: "app-switcher-app" }, choice.app)))] }) })] })] }));
56
- }
57
- //# sourceMappingURL=app-switcher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-switcher.js","sourceRoot":"","sources":["../../src/header/app-switcher.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/header/apps.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- import { type VariantProps } from 'class-variance-authority';
2
- /**
3
- * shadcn Avatar on Base UI, used as a mark (docs/design/png/Avatar.png): the
4
- * app, the operator's account, a ship (two mono letters from its name), argo
5
- * (the operator mark) and a retired ship (dashed frame). Decorative: the name
6
- * is always written next to it, so it is hidden from assistive technology.
7
- */
8
- declare const avatarVariants: (props?: ({
9
- kind?: "app" | "retired" | "ship" | "argo" | "account" | null | undefined;
10
- size?: 20 | 28 | 36 | null | undefined;
11
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
12
- export declare function Avatar({ kind, size, name, className, }: VariantProps<typeof avatarVariants> & {
13
- name?: string;
14
- className?: string;
15
- }): import("react").JSX.Element;
16
- export {};
@@ -1,44 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- import { Avatar as AvatarPrimitive } from '@base-ui/react/avatar';
4
- import { cva } from 'class-variance-authority';
5
- import { Ship, UserRound } from 'lucide-react';
6
- import { classNames } from '../class-names.js';
7
- /**
8
- * shadcn Avatar on Base UI, used as a mark (docs/design/png/Avatar.png): the
9
- * app, the operator's account, a ship (two mono letters from its name), argo
10
- * (the operator mark) and a retired ship (dashed frame). Decorative: the name
11
- * is always written next to it, so it is hidden from assistive technology.
12
- */
13
- const avatarVariants = cva('inline-flex shrink-0 items-center justify-center overflow-hidden font-semibold uppercase select-none', {
14
- variants: {
15
- kind: {
16
- app: 'rounded-sm bg-primary text-primary-foreground',
17
- account: 'rounded-full bg-secondary font-sans text-foreground',
18
- ship: 'rounded-sm bg-secondary font-mono text-foreground',
19
- argo: 'rounded-sm bg-highlight text-primary',
20
- retired: 'rounded-sm border border-dashed border-input font-mono font-medium text-muted-foreground',
21
- },
22
- size: {
23
- 20: 'size-5 text-micro [&_svg]:size-3',
24
- 28: 'size-7 text-micro [&_svg]:size-(--size-icon-sm)',
25
- 36: 'size-9 text-caption [&_svg]:size-(--size-icon)',
26
- },
27
- },
28
- defaultVariants: { kind: 'ship', size: 28 },
29
- });
30
- const LETTERS = 2;
31
- function markOf(kind, name) {
32
- if (kind === 'app') {
33
- return _jsx(Ship, { "aria-hidden": true });
34
- }
35
- if (kind === 'argo') {
36
- return _jsx(UserRound, { "aria-hidden": true });
37
- }
38
- return name.replaceAll('-', '').slice(0, LETTERS);
39
- }
40
- export function Avatar({ kind = 'ship', size, name = '', className, }) {
41
- const resolvedKind = kind ?? 'ship';
42
- return (_jsx(AvatarPrimitive.Root, { "aria-hidden": true, "data-slot": "avatar", className: classNames(avatarVariants({ kind, size }), className), children: _jsx(AvatarPrimitive.Fallback, { children: markOf(resolvedKind, name) }) }));
43
- }
44
- //# sourceMappingURL=avatar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../../src/header/atoms/avatar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,cAAc,GAAG,GAAG,CACxB,sGAAsG,EACtG;IACE,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,GAAG,EAAE,+CAA+C;YACpD,OAAO,EAAE,qDAAqD;YAC9D,IAAI,EAAE,mDAAmD;YACzD,IAAI,EAAE,sCAAsC;YAC5C,OAAO,EAAE,0FAA0F;SACpG;QACD,IAAI,EAAE;YACJ,EAAE,EAAE,kCAAkC;YACtC,EAAE,EAAE,iDAAiD;YACrD,EAAE,EAAE,gDAAgD;SACrD;KACF;IACD,eAAe,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;CAC5C,CACF,CAAC;AAIF,MAAM,OAAO,GAAG,CAAC,CAAC;AAElB,SAAS,MAAM,CAAC,IAAgB,EAAE,IAAY;IAC5C,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,OAAO,KAAC,IAAI,0BAAe,CAAC;IAC9B,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,KAAC,SAAS,0BAAe,CAAC;IACnC,CAAC;IACD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EACrB,IAAI,GAAG,MAAM,EACb,IAAI,EACJ,IAAI,GAAG,EAAE,EACT,SAAS,GACmE;IAC5E,MAAM,YAAY,GAAG,IAAI,IAAI,MAAM,CAAC;IACpC,OAAO,CACL,KAAC,eAAe,CAAC,IAAI,sCAET,QAAQ,EAClB,SAAS,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,YAEhE,KAAC,eAAe,CAAC,QAAQ,cAAE,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,GAA4B,GAC5D,CACxB,CAAC;AACJ,CAAC"}
@@ -1,22 +0,0 @@
1
- import { Button as ButtonPrimitive } from '@base-ui/react/button';
2
- import { type VariantProps } from 'class-variance-authority';
3
- import type { ReactNode } from 'react';
4
- /**
5
- * shadcn Button on Base UI, themed to docs/design/png/Button.png: primary
6
- * (shadcn default), secondary (shadcn outline), ghost and destructive, in four
7
- * sizes. Icons sit spacing-2 from the label.
8
- */
9
- declare const buttonVariants: (props?: ({
10
- variant?: "primary" | "secondary" | "ghost" | "destructive" | null | undefined;
11
- size?: "touch" | "xs" | "sm" | "md" | null | undefined;
12
- isIconOnly?: boolean | null | undefined;
13
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
14
- type ButtonProps = ButtonPrimitive.Props & VariantProps<typeof buttonVariants> & {
15
- /** A Lucide icon before the label. */
16
- icon?: ReactNode;
17
- /** Keeps the label, puts a spinner in place of the icon and blocks input, without dimming. */
18
- isLoading?: boolean;
19
- };
20
- /** A link styled as a button: pass `render={<a href="..." />}` and `nativeButton={false}` (Base UI's asChild). */
21
- export declare function Button({ className, variant, size, isIconOnly, icon, isLoading, disabled, children, ...props }: ButtonProps): import("react").JSX.Element;
22
- export {};
@@ -1,48 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Button as ButtonPrimitive } from '@base-ui/react/button';
3
- import { cva } from 'class-variance-authority';
4
- import { LoaderCircle } from 'lucide-react';
5
- import { classNames } from '../class-names.js';
6
- /**
7
- * shadcn Button on Base UI, themed to docs/design/png/Button.png: primary
8
- * (shadcn default), secondary (shadcn outline), ghost and destructive, in four
9
- * sizes. Icons sit spacing-2 from the label.
10
- */
11
- const buttonVariants = cva("inline-flex shrink-0 items-center justify-center gap-2 rounded-md border border-transparent font-medium whitespace-nowrap transition-[background-color,border-color,opacity] duration-(--duration-fast) select-none data-disabled:pointer-events-none data-disabled:not-data-loading:opacity-45 data-loading:cursor-progress [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-(--size-icon)", {
12
- variants: {
13
- variant: {
14
- primary: 'bg-primary text-primary-foreground hover:bg-primary-hover',
15
- secondary: 'border-input bg-card text-foreground shadow-sm hover:bg-accent aria-expanded:bg-accent',
16
- ghost: 'bg-transparent text-foreground hover:bg-accent aria-expanded:bg-accent',
17
- destructive: 'bg-destructive text-destructive-foreground hover:opacity-90',
18
- },
19
- size: {
20
- xs: 'h-(--size-control-xs) gap-1.5 px-2.5 text-meta',
21
- sm: 'h-(--size-control-sm) px-3 text-meta',
22
- md: 'h-(--size-control) px-3.5 text-body',
23
- touch: 'h-(--size-control-touch) rounded-lg px-4 text-body-touch',
24
- },
25
- isIconOnly: {
26
- true: 'px-0',
27
- false: '',
28
- },
29
- },
30
- compoundVariants: [
31
- { isIconOnly: true, size: 'xs', className: 'w-(--size-control-xs)' },
32
- { isIconOnly: true, size: 'sm', className: 'w-(--size-control-sm)' },
33
- { isIconOnly: true, size: 'md', className: 'w-(--size-control)' },
34
- { isIconOnly: true, size: 'touch', className: 'w-(--size-control-touch)' },
35
- ],
36
- defaultVariants: {
37
- variant: 'secondary',
38
- size: 'md',
39
- isIconOnly: false,
40
- },
41
- });
42
- /** A link styled as a button: pass `render={<a href="..." />}` and `nativeButton={false}` (Base UI's asChild). */
43
- export function Button({ className, variant, size, isIconOnly, icon, isLoading = false, disabled, children, ...props }) {
44
- return (_jsxs(ButtonPrimitive, { "data-slot": "button", "data-loading": isLoading ? '' : undefined, "aria-busy": isLoading || undefined, disabled: disabled === true || isLoading,
45
- // A busy button keeps its focus, so a keyboard user does not lose their place.
46
- focusableWhenDisabled: isLoading, className: classNames(buttonVariants({ variant, size, isIconOnly }), className), ...props, children: [isLoading ? _jsx(LoaderCircle, { "aria-hidden": true, className: "animate-spin motion-reduce:animate-none" }) : icon, children] }));
47
- }
48
- //# sourceMappingURL=button.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"button.js","sourceRoot":"","sources":["../../../src/header/atoms/button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C;;;;GAIG;AACH,MAAM,cAAc,GAAG,GAAG,CACxB,4ZAA4Z,EAC5Z;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,2DAA2D;YACpE,SAAS,EAAE,wFAAwF;YACnG,KAAK,EAAE,wEAAwE;YAC/E,WAAW,EAAE,6DAA6D;SAC3E;QACD,IAAI,EAAE;YACJ,EAAE,EAAE,gDAAgD;YACpD,EAAE,EAAE,sCAAsC;YAC1C,EAAE,EAAE,qCAAqC;YACzC,KAAK,EAAE,0DAA0D;SAClE;QACD,UAAU,EAAE;YACV,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,EAAE;SACV;KACF;IACD,gBAAgB,EAAE;QAChB,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,uBAAuB,EAAE;QACpE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,uBAAuB,EAAE;QACpE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,oBAAoB,EAAE;QACjE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,0BAA0B,EAAE;KAC3E;IACD,eAAe,EAAE;QACf,OAAO,EAAE,WAAW;QACpB,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,KAAK;KAClB;CACF,CACF,CAAC;AAUF,kHAAkH;AAClH,MAAM,UAAU,MAAM,CAAC,EACrB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,SAAS,GAAG,KAAK,EACjB,QAAQ,EACR,QAAQ,EACR,GAAG,KAAK,EACI;IACZ,OAAO,CACL,MAAC,eAAe,iBACJ,QAAQ,kBACJ,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,eAC7B,SAAS,IAAI,SAAS,EACjC,QAAQ,EAAE,QAAQ,KAAK,IAAI,IAAI,SAAS;QACxC,+EAA+E;QAC/E,qBAAqB,EAAE,SAAS,EAChC,SAAS,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,CAAC,KAC3E,KAAK,aAER,SAAS,CAAC,CAAC,CAAC,KAAC,YAAY,yBAAa,SAAS,EAAC,yCAAyC,GAAG,CAAC,CAAC,CAAC,IAAI,EACnG,QAAQ,IACO,CACnB,CAAC;AACJ,CAAC"}
@@ -1,19 +0,0 @@
1
- /**
2
- * What Dialog and AlertDialog share (docs/design/png/Dialog.png): the --overlay
3
- * scrim, a centred popup 512 or 560 px wide with 24 px padding and
4
- * --radius-xl, and the header and footer layout. A popup taller than the
5
- * window scrolls inside it, so its buttons stay in reach. Under reduced motion
6
- * nothing zooms; it only fades.
7
- */
8
- export declare const dialogSurface: {
9
- overlay: string;
10
- popup: (props?: ({
11
- size?: "sm" | "md" | null | undefined;
12
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
13
- header: string;
14
- footer: string;
15
- title: string;
16
- description: string;
17
- phoneSheet: string;
18
- phoneFullScreen: string;
19
- };
@@ -1,32 +0,0 @@
1
- import { cva } from 'class-variance-authority';
2
- /**
3
- * What Dialog and AlertDialog share (docs/design/png/Dialog.png): the --overlay
4
- * scrim, a centred popup 512 or 560 px wide with 24 px padding and
5
- * --radius-xl, and the header and footer layout. A popup taller than the
6
- * window scrolls inside it, so its buttons stay in reach. Under reduced motion
7
- * nothing zooms; it only fades.
8
- */
9
- export const dialogSurface = {
10
- overlay: 'fixed inset-0 isolate z-50 bg-overlay duration-(--duration-base) data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0',
11
- popup: cva('fixed top-1/2 left-1/2 z-50 grid max-h-[calc(100dvh-var(--spacing)*8)] w-full max-w-[calc(100%-var(--spacing)*8)] -translate-x-1/2 -translate-y-1/2 gap-4 overflow-y-auto rounded-xl border border-border bg-popover p-6 text-body text-popover-foreground shadow-lg duration-(--duration-base) outline-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 motion-reduce:data-open:zoom-in-100 motion-reduce:data-closed:zoom-out-100', {
12
- variants: {
13
- size: {
14
- sm: 'sm:max-w-(--size-dialog-sm)',
15
- md: 'sm:max-w-(--size-dialog-md)',
16
- },
17
- },
18
- defaultVariants: { size: 'sm' },
19
- }),
20
- header: 'flex flex-col gap-2',
21
- // Desktop: right-aligned, Cancel left of the action. Phone: stacked full
22
- // width, action on top, Cancel last (docs/design/conventions.md, "Buttons").
23
- footer: 'flex flex-col-reverse gap-2 pt-1 sm:flex-row sm:justify-end',
24
- title: 'text-heading font-semibold text-foreground',
25
- description: 'text-body text-muted-foreground',
26
- // On phone a confirm rises as a bottom sheet (docs/design/png/Sheet.png):
27
- // pinned to the bottom, full width, rounded top, clear of the home bar.
28
- phoneSheet: 'max-sm:top-auto max-sm:bottom-0 max-sm:left-0 max-sm:max-w-full max-sm:translate-x-0 max-sm:translate-y-0 max-sm:rounded-none max-sm:rounded-t-2xl max-sm:border-x-0 max-sm:border-b-0 max-sm:px-4 max-sm:pb-[max(calc(var(--spacing)*4),env(safe-area-inset-bottom))] max-sm:[&_[data-slot=button]]:h-(--size-control-touch) max-sm:[&_[data-slot=button]]:w-full',
29
- // On phone a dialog that shows a form or a prompt fills the screen.
30
- phoneFullScreen: 'max-sm:top-0 max-sm:left-0 max-sm:h-dvh max-sm:max-w-full max-sm:translate-x-0 max-sm:translate-y-0 max-sm:content-start max-sm:overflow-y-auto max-sm:rounded-none max-sm:border-0',
31
- };
32
- //# sourceMappingURL=dialog-surface.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dialog-surface.js","sourceRoot":"","sources":["../../../src/header/atoms/dialog-surface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO,EACL,0JAA0J;IAC5J,KAAK,EAAE,GAAG,CACR,8fAA8f,EAC9f;QACE,QAAQ,EAAE;YACR,IAAI,EAAE;gBACJ,EAAE,EAAE,6BAA6B;gBACjC,EAAE,EAAE,6BAA6B;aAClC;SACF;QACD,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;KAChC,CACF;IACD,MAAM,EAAE,qBAAqB;IAC7B,yEAAyE;IACzE,6EAA6E;IAC7E,MAAM,EAAE,6DAA6D;IACrE,KAAK,EAAE,4CAA4C;IACnD,WAAW,EAAE,iCAAiC;IAC9C,0EAA0E;IAC1E,wEAAwE;IACxE,UAAU,EACR,oWAAoW;IACtW,oEAAoE;IACpE,eAAe,EACb,qLAAqL;CACxL,CAAC"}
@@ -1,19 +0,0 @@
1
- import { Dialog as DialogPrimitive } from '@base-ui/react/dialog';
2
- import type { VariantProps } from 'class-variance-authority';
3
- import type { ComponentProps } from 'react';
4
- import { dialogSurface } from './dialog-surface.js';
5
- /**
6
- * shadcn Dialog on Base UI, for a blocking short form (docs/design/png/Dialog.png):
7
- * sm (512 px) for confirms, md (560 px) for forms. Escape and Cancel close it;
8
- * focus moves to the first field and returns to the trigger. While busy, the
9
- * caller keeps it open and disables everything but the loading action.
10
- */
11
- declare function Dialog(props: DialogPrimitive.Root.Props): import("react").JSX.Element;
12
- declare function DialogTrigger(props: DialogPrimitive.Trigger.Props): import("react").JSX.Element;
13
- declare function DialogClose(props: DialogPrimitive.Close.Props): import("react").JSX.Element;
14
- declare function DialogContent({ className, size, children, ...props }: DialogPrimitive.Popup.Props & VariantProps<typeof dialogSurface.popup>): import("react").JSX.Element;
15
- declare function DialogHeader({ className, ...props }: ComponentProps<'div'>): import("react").JSX.Element;
16
- declare function DialogFooter({ className, ...props }: ComponentProps<'div'>): import("react").JSX.Element;
17
- declare function DialogTitle({ className, ...props }: DialogPrimitive.Title.Props): import("react").JSX.Element;
18
- declare function DialogDescription({ className, ...props }: DialogPrimitive.Description.Props): import("react").JSX.Element;
19
- export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, };
@@ -1,37 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Dialog as DialogPrimitive } from '@base-ui/react/dialog';
4
- import { classNames } from '../class-names.js';
5
- import { dialogSurface } from './dialog-surface.js';
6
- /**
7
- * shadcn Dialog on Base UI, for a blocking short form (docs/design/png/Dialog.png):
8
- * sm (512 px) for confirms, md (560 px) for forms. Escape and Cancel close it;
9
- * focus moves to the first field and returns to the trigger. While busy, the
10
- * caller keeps it open and disables everything but the loading action.
11
- */
12
- function Dialog(props) {
13
- return _jsx(DialogPrimitive.Root, { "data-slot": "dialog", ...props });
14
- }
15
- function DialogTrigger(props) {
16
- return _jsx(DialogPrimitive.Trigger, { "data-slot": "dialog-trigger", ...props });
17
- }
18
- function DialogClose(props) {
19
- return _jsx(DialogPrimitive.Close, { "data-slot": "dialog-close", ...props });
20
- }
21
- function DialogContent({ className, size, children, ...props }) {
22
- return (_jsxs(DialogPrimitive.Portal, { children: [_jsx(DialogPrimitive.Backdrop, { "data-slot": "dialog-overlay", className: dialogSurface.overlay }), _jsx(DialogPrimitive.Popup, { "data-slot": "dialog-content", className: classNames(dialogSurface.popup({ size }), className), ...props, children: children })] }));
23
- }
24
- function DialogHeader({ className, ...props }) {
25
- return _jsx("div", { "data-slot": "dialog-header", className: classNames(dialogSurface.header, className), ...props });
26
- }
27
- function DialogFooter({ className, ...props }) {
28
- return _jsx("div", { "data-slot": "dialog-footer", className: classNames(dialogSurface.footer, className), ...props });
29
- }
30
- function DialogTitle({ className, ...props }) {
31
- return (_jsx(DialogPrimitive.Title, { "data-slot": "dialog-title", className: classNames(dialogSurface.title, className), ...props }));
32
- }
33
- function DialogDescription({ className, ...props }) {
34
- return (_jsx(DialogPrimitive.Description, { "data-slot": "dialog-description", className: classNames(dialogSurface.description, className), ...props }));
35
- }
36
- export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, };
37
- //# sourceMappingURL=dialog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../../src/header/atoms/dialog.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIlE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;GAKG;AACH,SAAS,MAAM,CAAC,KAAiC;IAC/C,OAAO,KAAC,eAAe,CAAC,IAAI,iBAAW,QAAQ,KAAK,KAAK,GAAI,CAAC;AAChE,CAAC;AAED,SAAS,aAAa,CAAC,KAAoC;IACzD,OAAO,KAAC,eAAe,CAAC,OAAO,iBAAW,gBAAgB,KAAK,KAAK,GAAI,CAAC;AAC3E,CAAC;AAED,SAAS,WAAW,CAAC,KAAkC;IACrD,OAAO,KAAC,eAAe,CAAC,KAAK,iBAAW,cAAc,KAAK,KAAK,GAAI,CAAC;AACvE,CAAC;AAED,SAAS,aAAa,CAAC,EACrB,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,GAAG,KAAK,EAC+D;IACvE,OAAO,CACL,MAAC,eAAe,CAAC,MAAM,eACrB,KAAC,eAAe,CAAC,QAAQ,iBAAW,gBAAgB,EAAC,SAAS,EAAE,aAAa,CAAC,OAAO,GAAI,EACzF,KAAC,eAAe,CAAC,KAAK,iBACV,gBAAgB,EAC1B,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,KAC3D,KAAK,YAER,QAAQ,GACa,IACD,CAC1B,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAyB;IAClE,OAAO,2BAAe,eAAe,EAAC,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AAC9G,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAyB;IAClE,OAAO,2BAAe,eAAe,EAAC,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AAC9G,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACvE,OAAO,CACL,KAAC,eAAe,CAAC,KAAK,iBAAW,cAAc,EAAC,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CACrH,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAqC;IACnF,OAAO,CACL,KAAC,eAAe,CAAC,WAAW,iBAChB,oBAAoB,EAC9B,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,KACvD,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EACL,MAAM,EACN,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,aAAa,GACd,CAAC"}
@@ -1,21 +0,0 @@
1
- import { Menu as MenuPrimitive } from '@base-ui/react/menu';
2
- /**
3
- * shadcn DropdownMenu on Base UI Menu (docs/design/png/DropdownMenu.png).
4
- * Desktop only; on phone the same items open in a bottom Sheet. Items that
5
- * open a dialog end with an ellipsis. The destructive item is last, after a
6
- * separator, in --destructive-text.
7
- */
8
- declare function DropdownMenu(props: MenuPrimitive.Root.Props): import("react").JSX.Element;
9
- declare function DropdownMenuTrigger(props: MenuPrimitive.Trigger.Props): import("react").JSX.Element;
10
- declare function DropdownMenuContent({ align, side, sideOffset, className, ...props }: MenuPrimitive.Popup.Props & Pick<MenuPrimitive.Positioner.Props, 'align' | 'side' | 'sideOffset'>): import("react").JSX.Element;
11
- declare function DropdownMenuGroup(props: MenuPrimitive.Group.Props): import("react").JSX.Element;
12
- declare function DropdownMenuItem({ className, variant, ...props }: MenuPrimitive.Item.Props & {
13
- variant?: 'default' | 'destructive';
14
- }): import("react").JSX.Element;
15
- /** A small heading over a group of items, such as Theme. */
16
- declare function DropdownMenuLabel({ className, ...props }: MenuPrimitive.GroupLabel.Props): import("react").JSX.Element;
17
- declare function DropdownMenuRadioGroup(props: MenuPrimitive.RadioGroup.Props): import("react").JSX.Element;
18
- /** One choice of a radio group: the check sits at the end of the row while it is chosen. */
19
- declare function DropdownMenuRadioItem({ className, children, ...props }: MenuPrimitive.RadioItem.Props): import("react").JSX.Element;
20
- declare function DropdownMenuSeparator({ className, ...props }: MenuPrimitive.Separator.Props): import("react").JSX.Element;
21
- export { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuTrigger, };
@@ -1,42 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Menu as MenuPrimitive } from '@base-ui/react/menu';
4
- import { Check } from 'lucide-react';
5
- import { classNames } from '../class-names.js';
6
- /**
7
- * shadcn DropdownMenu on Base UI Menu (docs/design/png/DropdownMenu.png).
8
- * Desktop only; on phone the same items open in a bottom Sheet. Items that
9
- * open a dialog end with an ellipsis. The destructive item is last, after a
10
- * separator, in --destructive-text.
11
- */
12
- function DropdownMenu(props) {
13
- return _jsx(MenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
14
- }
15
- function DropdownMenuTrigger(props) {
16
- return _jsx(MenuPrimitive.Trigger, { "data-slot": "dropdown-menu-trigger", ...props });
17
- }
18
- function DropdownMenuContent({ align = 'end', side = 'bottom', sideOffset = 4, className, ...props }) {
19
- return (_jsx(MenuPrimitive.Portal, { children: _jsx(MenuPrimitive.Positioner, { className: "isolate z-50 outline-none", align: align, side: side, sideOffset: sideOffset, children: _jsx(MenuPrimitive.Popup, { "data-slot": "dropdown-menu-content", className: classNames('max-h-(--available-height) min-w-48 origin-(--transform-origin) overflow-y-auto rounded-xl border border-border bg-popover p-1 text-popover-foreground shadow-lg duration-(--duration-fast) outline-none data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0', className), ...props }) }) }));
20
- }
21
- function DropdownMenuGroup(props) {
22
- return _jsx(MenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
23
- }
24
- function DropdownMenuItem({ className, variant = 'default', ...props }) {
25
- return (_jsx(MenuPrimitive.Item, { "data-slot": "dropdown-menu-item", "data-variant": variant, className: classNames("relative flex h-8.5 items-center gap-2.5 rounded-sm px-2.5 text-body text-foreground outline-none select-none data-highlighted:bg-accent focus-visible:outline-2 focus-visible:outline-ring data-disabled:pointer-events-none data-disabled:opacity-45 data-[variant=destructive]:text-destructive-text [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-(--size-icon) [&_svg]:text-muted-foreground data-[variant=destructive]:[&_svg]:text-destructive-text", className), ...props }));
26
- }
27
- /** A small heading over a group of items, such as Theme. */
28
- function DropdownMenuLabel({ className, ...props }) {
29
- return (_jsx(MenuPrimitive.GroupLabel, { "data-slot": "dropdown-menu-label", className: classNames('px-2.5 pt-1.5 pb-1 text-caption text-muted-foreground', className), ...props }));
30
- }
31
- function DropdownMenuRadioGroup(props) {
32
- return _jsx(MenuPrimitive.RadioGroup, { "data-slot": "dropdown-menu-radio-group", ...props });
33
- }
34
- /** One choice of a radio group: the check sits at the end of the row while it is chosen. */
35
- function DropdownMenuRadioItem({ className, children, ...props }) {
36
- return (_jsxs(MenuPrimitive.RadioItem, { "data-slot": "dropdown-menu-radio-item", className: classNames("relative flex h-8.5 items-center gap-2.5 rounded-sm px-2.5 text-body text-foreground outline-none select-none data-highlighted:bg-accent focus-visible:outline-2 focus-visible:outline-ring data-disabled:pointer-events-none data-disabled:opacity-45 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-(--size-icon) [&_svg]:text-muted-foreground", className), ...props, children: [children, _jsx(MenuPrimitive.RadioItemIndicator, { className: "ml-auto flex", children: _jsx(Check, { "aria-hidden": true, className: "text-foreground" }) })] }));
37
- }
38
- function DropdownMenuSeparator({ className, ...props }) {
39
- return (_jsx(MenuPrimitive.Separator, { "data-slot": "dropdown-menu-separator", className: classNames('-mx-1 my-1 h-px bg-border', className), ...props }));
40
- }
41
- export { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuTrigger, };
42
- //# sourceMappingURL=dropdown-menu.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dropdown-menu.js","sourceRoot":"","sources":["../../../src/header/atoms/dropdown-menu.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import type { ComponentProps } from 'react';
2
- /**
3
- * shadcn Kbd (docs/design/png/Kbd.png): a key or shortcut, beside the action
4
- * it hints at. Desktop only: hidden on phone, and never the only way to learn
5
- * an action.
6
- */
7
- export declare function Kbd({ className, ...props }: ComponentProps<'kbd'>): import("react").JSX.Element;
@@ -1,11 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { classNames } from '../class-names.js';
3
- /**
4
- * shadcn Kbd (docs/design/png/Kbd.png): a key or shortcut, beside the action
5
- * it hints at. Desktop only: hidden on phone, and never the only way to learn
6
- * an action.
7
- */
8
- export function Kbd({ className, ...props }) {
9
- return (_jsx("kbd", { "data-slot": "kbd", className: classNames('inline-flex h-5 min-w-5 shrink-0 items-center justify-center rounded-xs border border-border bg-muted px-1.25 font-sans text-micro font-medium text-muted-foreground max-sm:hidden', className), ...props }));
10
- }
11
- //# sourceMappingURL=kbd.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kbd.js","sourceRoot":"","sources":["../../../src/header/atoms/kbd.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C;;;;GAIG;AACH,MAAM,UAAU,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAyB;IAChE,OAAO,CACL,2BACY,KAAK,EACf,SAAS,EAAE,UAAU,CACnB,oLAAoL,EACpL,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC"}