@knkcs/anker 1.9.3 → 1.10.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/CLAUDE-ANKER.md +31 -0
- package/dist/atoms/index.js +4 -4
- package/dist/{chunk-2QFOWHTU.js → chunk-2ZWZ2WAS.js} +20 -6
- package/dist/chunk-2ZWZ2WAS.js.map +1 -0
- package/dist/{chunk-NQN6LXYU.js → chunk-ELQTHWXC.js} +3 -3
- package/dist/{chunk-NQN6LXYU.js.map → chunk-ELQTHWXC.js.map} +1 -1
- package/dist/chunk-VOGT33LU.js +18 -0
- package/dist/chunk-VOGT33LU.js.map +1 -0
- package/dist/components/index.d.ts +13 -2
- package/dist/components/index.js +70 -46
- package/dist/components/index.js.map +1 -1
- package/dist/primitives/index.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-2QFOWHTU.js.map +0 -1
- package/dist/chunk-ZFBDVERP.js +0 -32
- package/dist/chunk-ZFBDVERP.js.map +0 -1
package/CLAUDE-ANKER.md
CHANGED
|
@@ -90,6 +90,37 @@ Full spec with composition diagrams, slot tables, and authoring rules: `docs/pag
|
|
|
90
90
|
|
|
91
91
|
---
|
|
92
92
|
|
|
93
|
+
## DataTable cells
|
|
94
|
+
|
|
95
|
+
anker ships 16 reusable cell components for `<DataTable>` columns under `@knkcs/anker/components/data-table/cells`. **Use cells before composing primitives.** Inline `<Badge>` / `<Box>` / `<Text>` / `<Tooltip>` cell content fragments the visual language and silently misses later improvements (a11y, dark mode, density).
|
|
96
|
+
|
|
97
|
+
**Rule:** cells are the contract — if no cell fits, file an issue and propose a new cell. Don't hand-roll.
|
|
98
|
+
|
|
99
|
+
| Cell | Use for |
|
|
100
|
+
|---|---|
|
|
101
|
+
| `ActionCell` | row action icons |
|
|
102
|
+
| `BooleanCell` | yes/no |
|
|
103
|
+
| `CodeCell` | monospace code |
|
|
104
|
+
| `ColorSwatchCell` | color swatch |
|
|
105
|
+
| `CountCell` | "N items" |
|
|
106
|
+
| `DateCell` | timestamps |
|
|
107
|
+
| `DeviceCell` | User-Agent → browser/OS + tooltip |
|
|
108
|
+
| `IdentityCell` | avatar + name (+ subText) |
|
|
109
|
+
| `LinkCell` | internal link |
|
|
110
|
+
| `MenuCell` | row overflow menu |
|
|
111
|
+
| `NumberCell` | numbers |
|
|
112
|
+
| `SlugCell` | mono IDs |
|
|
113
|
+
| `StatusBadgeCell` | status pill (+ optional `tooltip`) |
|
|
114
|
+
| `SwitchCell` | inline toggle |
|
|
115
|
+
| `TruncatedTextCell` | text (+ optional `subText`, `maxLength`) |
|
|
116
|
+
| `UrlCell` | external URL |
|
|
117
|
+
|
|
118
|
+
Import path: `@knkcs/anker/components/data-table/cells`.
|
|
119
|
+
|
|
120
|
+
Full slot/prop tables: `docs/react-table-reference.md`. Mapping guide for common column intents: `docs/page-patterns.md` §11.13.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
93
124
|
## Pointers
|
|
94
125
|
|
|
95
126
|
- Full spec: anker GitHub Pages docs site (`/design-system`, `/page-patterns`)
|
package/dist/atoms/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Prose
|
|
2
|
-
import { formatRelativeToCurrentWeekDateTime, formatRelativeDateTime } from '../chunk-
|
|
3
|
-
export { StatusBadge, formatRelativeDateTime, formatRelativeToCurrentWeekDateTime } from '../chunk-
|
|
4
|
-
import { Tooltip, Table, MenuRoot, MenuTrigger, MenuContent, MenuItem, Badge } from '../chunk-
|
|
1
|
+
import { Prose } from '../chunk-VOGT33LU.js';
|
|
2
|
+
import { formatRelativeToCurrentWeekDateTime, formatRelativeDateTime } from '../chunk-ELQTHWXC.js';
|
|
3
|
+
export { StatusBadge, formatRelativeDateTime, formatRelativeToCurrentWeekDateTime } from '../chunk-ELQTHWXC.js';
|
|
4
|
+
import { Tooltip, Avatar, Table, MenuRoot, MenuTrigger, MenuContent, MenuItem, Badge } from '../chunk-2ZWZ2WAS.js';
|
|
5
5
|
export { SearchInput } from '../chunk-E7KRPPCQ.js';
|
|
6
6
|
import { Textarea } from '../chunk-NFZMG6ZL.js';
|
|
7
7
|
import { text_input_default } from '../chunk-OU6H3KU4.js';
|
|
@@ -1,9 +1,23 @@
|
|
|
1
|
-
import { Menu, Portal, AbsoluteCenter, Tooltip as Tooltip$1 } from '@chakra-ui/react';
|
|
1
|
+
import { AvatarGroup as AvatarGroup$1, Menu, Avatar as Avatar$1, Portal, AbsoluteCenter, Tooltip as Tooltip$1 } from '@chakra-ui/react';
|
|
2
2
|
export { Badge, Table } from '@chakra-ui/react';
|
|
3
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
4
|
import { Check, ChevronRight } from 'lucide-react';
|
|
4
|
-
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
5
5
|
|
|
6
|
-
// src/primitives/
|
|
6
|
+
// src/primitives/avatar.tsx
|
|
7
|
+
var Avatar = function Avatar2({
|
|
8
|
+
ref,
|
|
9
|
+
...props
|
|
10
|
+
}) {
|
|
11
|
+
const { name, src, srcSet, loading, icon, fallback, children, ...rest } = props;
|
|
12
|
+
return /* @__PURE__ */ jsxs(Avatar$1.Root, { ref, ...rest, children: [
|
|
13
|
+
/* @__PURE__ */ jsx(Avatar$1.Fallback, { name, children: icon || fallback }),
|
|
14
|
+
/* @__PURE__ */ jsx(Avatar$1.Image, { src, srcSet, loading }),
|
|
15
|
+
children
|
|
16
|
+
] });
|
|
17
|
+
};
|
|
18
|
+
Avatar.displayName = "Avatar";
|
|
19
|
+
var AvatarGroup = AvatarGroup$1;
|
|
20
|
+
AvatarGroup.displayName = "AvatarGroup";
|
|
7
21
|
var MenuContent = function MenuContent2({
|
|
8
22
|
ref,
|
|
9
23
|
...props
|
|
@@ -104,6 +118,6 @@ var Tooltip = function Tooltip2({
|
|
|
104
118
|
};
|
|
105
119
|
Tooltip.displayName = "Tooltip";
|
|
106
120
|
|
|
107
|
-
export { MenuArrow, MenuCheckboxItem, MenuContent, MenuContextTrigger, MenuItem, MenuItemCommand, MenuItemGroup, MenuItemText, MenuRadioItem, MenuRadioItemGroup, MenuRoot, MenuSeparator, MenuTrigger, MenuTriggerItem, Tooltip };
|
|
108
|
-
//# sourceMappingURL=chunk-
|
|
109
|
-
//# sourceMappingURL=chunk-
|
|
121
|
+
export { Avatar, AvatarGroup, MenuArrow, MenuCheckboxItem, MenuContent, MenuContextTrigger, MenuItem, MenuItemCommand, MenuItemGroup, MenuItemText, MenuRadioItem, MenuRadioItemGroup, MenuRoot, MenuSeparator, MenuTrigger, MenuTriggerItem, Tooltip };
|
|
122
|
+
//# sourceMappingURL=chunk-2ZWZ2WAS.js.map
|
|
123
|
+
//# sourceMappingURL=chunk-2ZWZ2WAS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/primitives/avatar.tsx","../src/primitives/menu.tsx","../src/primitives/tooltip.tsx"],"names":["Avatar","ChakraAvatar","ChakraAvatarGroup","MenuContent","jsx","ChakraMenu","MenuArrow","MenuCheckboxItem","jsxs","MenuRadioItem","MenuItemGroup","MenuTriggerItem","Tooltip","ChakraTooltip","Portal"],"mappings":"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","file":"chunk-2ZWZ2WAS.js","sourcesContent":["import {\n\tAvatar as ChakraAvatar,\n\tAvatarGroup as ChakraAvatarGroup,\n} from \"@chakra-ui/react\";\nimport type * as React from \"react\";\n\ntype ImageProps = React.ImgHTMLAttributes<HTMLImageElement>;\n\nexport interface AvatarProps extends ChakraAvatar.RootProps {\n\t/** Display name used to generate initials for the fallback. */\n\tname?: string;\n\t/** Image source URL. */\n\tsrc?: string;\n\t/** Image srcSet attribute for responsive images. */\n\tsrcSet?: string;\n\t/** Image loading strategy. */\n\tloading?: ImageProps[\"loading\"];\n\t/** Custom icon element shown as fallback. */\n\ticon?: React.ReactElement;\n\t/** Custom fallback content when no image or icon is provided. */\n\tfallback?: React.ReactNode;\n}\n\nexport const Avatar = function Avatar({\n\tref,\n\t...props\n}: AvatarProps & { ref?: React.Ref<HTMLDivElement> }) {\n\tconst { name, src, srcSet, loading, icon, fallback, children, ...rest } =\n\t\tprops;\n\treturn (\n\t\t<ChakraAvatar.Root ref={ref} {...rest}>\n\t\t\t<ChakraAvatar.Fallback name={name}>\n\t\t\t\t{icon || fallback}\n\t\t\t</ChakraAvatar.Fallback>\n\t\t\t<ChakraAvatar.Image src={src} srcSet={srcSet} loading={loading} />\n\t\t\t{children}\n\t\t</ChakraAvatar.Root>\n\t);\n};\nAvatar.displayName = \"Avatar\";\n\nexport const AvatarGroup = ChakraAvatarGroup;\nAvatarGroup.displayName = \"AvatarGroup\";\n","\"use client\";\n\nimport { AbsoluteCenter, Menu as ChakraMenu, Portal } from \"@chakra-ui/react\";\nimport { Check, ChevronRight } from \"lucide-react\";\nimport type * as React from \"react\";\n\ninterface MenuContentProps extends ChakraMenu.ContentProps {\n\t/** Whether to render the menu content inside a portal. @default true */\n\tportalled?: boolean;\n\t/** Container ref for the portal. */\n\tportalRef?: React.RefObject<HTMLElement | null>;\n}\n\nexport const MenuContent = function MenuContent({\n\tref,\n\t...props\n}: MenuContentProps & { ref?: React.Ref<HTMLDivElement> }) {\n\tconst { portalled = true, portalRef, ...rest } = props;\n\treturn (\n\t\t<Portal disabled={!portalled} container={portalRef}>\n\t\t\t<ChakraMenu.Positioner>\n\t\t\t\t<ChakraMenu.Content ref={ref} {...rest} />\n\t\t\t</ChakraMenu.Positioner>\n\t\t</Portal>\n\t);\n};\nMenuContent.displayName = \"MenuContent\";\n\nexport const MenuArrow = function MenuArrow({\n\tref,\n\t...props\n}: ChakraMenu.ArrowProps & { ref?: React.Ref<HTMLDivElement> }) {\n\treturn (\n\t\t<ChakraMenu.Arrow ref={ref} {...props}>\n\t\t\t<ChakraMenu.ArrowTip />\n\t\t</ChakraMenu.Arrow>\n\t);\n};\nMenuArrow.displayName = \"MenuArrow\";\n\nexport const MenuCheckboxItem = function MenuCheckboxItem({\n\tref,\n\t...props\n}: ChakraMenu.CheckboxItemProps & { ref?: React.Ref<HTMLDivElement> }) {\n\treturn (\n\t\t<ChakraMenu.CheckboxItem ps=\"8\" ref={ref} {...props}>\n\t\t\t<AbsoluteCenter axis=\"horizontal\" insetStart=\"4\" asChild>\n\t\t\t\t<ChakraMenu.ItemIndicator>\n\t\t\t\t\t<Check />\n\t\t\t\t</ChakraMenu.ItemIndicator>\n\t\t\t</AbsoluteCenter>\n\t\t\t{props.children}\n\t\t</ChakraMenu.CheckboxItem>\n\t);\n};\nMenuCheckboxItem.displayName = \"MenuCheckboxItem\";\n\nexport const MenuRadioItem = function MenuRadioItem({\n\tref,\n\t...props\n}: ChakraMenu.RadioItemProps & { ref?: React.Ref<HTMLDivElement> }) {\n\tconst { children, ...rest } = props;\n\treturn (\n\t\t<ChakraMenu.RadioItem ps=\"8\" ref={ref} {...rest}>\n\t\t\t<AbsoluteCenter axis=\"horizontal\" insetStart=\"4\" asChild>\n\t\t\t\t<ChakraMenu.ItemIndicator>\n\t\t\t\t\t<Check />\n\t\t\t\t</ChakraMenu.ItemIndicator>\n\t\t\t</AbsoluteCenter>\n\t\t\t<ChakraMenu.ItemText>{children}</ChakraMenu.ItemText>\n\t\t</ChakraMenu.RadioItem>\n\t);\n};\nMenuRadioItem.displayName = \"MenuRadioItem\";\n\nexport const MenuItemGroup = function MenuItemGroup({\n\tref,\n\t...props\n}: ChakraMenu.ItemGroupProps & { ref?: React.Ref<HTMLDivElement> }) {\n\tconst { title, children, ...rest } = props;\n\treturn (\n\t\t<ChakraMenu.ItemGroup ref={ref} {...rest}>\n\t\t\t{title && (\n\t\t\t\t<ChakraMenu.ItemGroupLabel userSelect=\"none\">\n\t\t\t\t\t{title}\n\t\t\t\t</ChakraMenu.ItemGroupLabel>\n\t\t\t)}\n\t\t\t{children}\n\t\t</ChakraMenu.ItemGroup>\n\t);\n};\nMenuItemGroup.displayName = \"MenuItemGroup\";\n\nexport interface MenuTriggerItemProps extends ChakraMenu.ItemProps {\n\t/** Icon rendered before the trigger item label. */\n\tstartIcon?: React.ReactNode;\n}\n\nexport const MenuTriggerItem = function MenuTriggerItem({\n\tref,\n\t...props\n}: MenuTriggerItemProps & { ref?: React.Ref<HTMLDivElement> }) {\n\tconst { startIcon, children, ...rest } = props;\n\treturn (\n\t\t<ChakraMenu.TriggerItem ref={ref} {...rest}>\n\t\t\t{startIcon}\n\t\t\t{children}\n\t\t\t<ChevronRight />\n\t\t</ChakraMenu.TriggerItem>\n\t);\n};\nMenuTriggerItem.displayName = \"MenuTriggerItem\";\n\nexport const MenuRadioItemGroup = ChakraMenu.RadioItemGroup;\nMenuRadioItemGroup.displayName = \"MenuRadioItemGroup\";\nexport const MenuContextTrigger = ChakraMenu.ContextTrigger;\nMenuContextTrigger.displayName = \"MenuContextTrigger\";\nexport const MenuRoot = ChakraMenu.Root;\nMenuRoot.displayName = \"MenuRoot\";\nexport const MenuSeparator = ChakraMenu.Separator;\nMenuSeparator.displayName = \"MenuSeparator\";\n\nexport const MenuItem = ChakraMenu.Item;\nMenuItem.displayName = \"MenuItem\";\nexport const MenuItemText = ChakraMenu.ItemText;\nMenuItemText.displayName = \"MenuItemText\";\nexport const MenuItemCommand = ChakraMenu.ItemCommand;\nMenuItemCommand.displayName = \"MenuItemCommand\";\nexport const MenuTrigger = ChakraMenu.Trigger;\nMenuTrigger.displayName = \"MenuTrigger\";\n","import { Tooltip as ChakraTooltip, Portal } from \"@chakra-ui/react\";\nimport type * as React from \"react\";\n\nexport interface TooltipProps extends ChakraTooltip.RootProps {\n\tshowArrow?: boolean;\n\tportalled?: boolean;\n\tportalRef?: React.RefObject<HTMLElement | null>;\n\tcontent: React.ReactNode;\n\tcontentProps?: ChakraTooltip.ContentProps;\n\tdisabled?: boolean;\n}\n\nexport const Tooltip = function Tooltip({\n\tref,\n\t...props\n}: TooltipProps & { ref?: React.Ref<HTMLDivElement> }) {\n\tconst {\n\t\tshowArrow,\n\t\tchildren,\n\t\tdisabled,\n\t\tportalled = true,\n\t\tcontent,\n\t\tcontentProps,\n\t\tportalRef,\n\t\t...rest\n\t} = props;\n\n\tif (disabled) return children;\n\n\treturn (\n\t\t<ChakraTooltip.Root {...rest}>\n\t\t\t<ChakraTooltip.Trigger asChild>{children}</ChakraTooltip.Trigger>\n\t\t\t<Portal disabled={!portalled} container={portalRef}>\n\t\t\t\t<ChakraTooltip.Positioner>\n\t\t\t\t\t<ChakraTooltip.Content ref={ref} {...contentProps}>\n\t\t\t\t\t\t{showArrow && (\n\t\t\t\t\t\t\t<ChakraTooltip.Arrow>\n\t\t\t\t\t\t\t\t<ChakraTooltip.ArrowTip />\n\t\t\t\t\t\t\t</ChakraTooltip.Arrow>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{content}\n\t\t\t\t\t</ChakraTooltip.Content>\n\t\t\t\t</ChakraTooltip.Positioner>\n\t\t\t</Portal>\n\t\t</ChakraTooltip.Root>\n\t);\n};\nTooltip.displayName = \"Tooltip\";\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Badge } from './chunk-
|
|
1
|
+
import { Badge } from './chunk-2ZWZ2WAS.js';
|
|
2
2
|
import dayjs from 'dayjs';
|
|
3
3
|
import calendarPlugin from 'dayjs/plugin/calendar.js';
|
|
4
4
|
import relativeTime from 'dayjs/plugin/relativeTime.js';
|
|
@@ -46,5 +46,5 @@ var StatusBadge = (props) => {
|
|
|
46
46
|
StatusBadge.displayName = "StatusBadge";
|
|
47
47
|
|
|
48
48
|
export { StatusBadge, formatRelativeDateTime, formatRelativeToCurrentWeekDateTime };
|
|
49
|
-
//# sourceMappingURL=chunk-
|
|
50
|
-
//# sourceMappingURL=chunk-
|
|
49
|
+
//# sourceMappingURL=chunk-ELQTHWXC.js.map
|
|
50
|
+
//# sourceMappingURL=chunk-ELQTHWXC.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/atoms/datetime/utils/relative-date-time-utils.ts","../src/atoms/status-badge/status-badge.tsx"],"names":[],"mappings":";;;;;;;;;AAKA,KAAA,CAAM,OAAO,SAAS,CAAA;AACtB,KAAA,CAAM,OAAO,YAAY,CAAA;AACzB,KAAA,CAAM,OAAO,cAAc,CAAA;AAmBpB,SAAS,sBAAA,CACf,IAAA,EACA,QAAA,mBAAqB,IAAI,MAAK,EAC7B;AACD,EAAA,OAAO,KAAA,CAAM,IAAI,CAAA,CAAE,IAAA,CAAK,QAAQ,CAAA;AACjC;AAmBO,SAAS,mCAAA,CACf,IAAA,EACA,QAAA,mBAAqB,IAAI,MAAK,EAC7B;AACD,EAAA,MAAM,UAAU,KAAA,CAAM,IAAI,CAAA,CAAE,MAAA,CAAO,UAAU,KAAK,CAAA;AAElD,EAAA,IAAI,CAAC,OAAA,EAAS;AAGb,IAAA,OAAO,KAAA,CAAM,IAAI,CAAA,CAAE,QAAA,CAAS,QAAA,EAAU;AAAA,MACrC,QAAA,EAAU;AAAA,KACV,CAAA;AAAA,EACF;AAGA,EAAA,OAAO,sBAAA,CAAuB,MAAM,QAAQ,CAAA;AAC7C;ACtDO,IAAM,WAAA,GAA0C,CAAC,KAAA,KAAU;AACjE,EAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAM,GAAI,KAAA;AAEzB,EAAA,MAAM,SAAA,GAAY,QAAQ,MAAM;AAC/B,IAAA,IAAI;AACH,MAAA,OAAO,cAAc,KAAK,CAAA;AAAA,IAC3B,CAAA,CAAA,MAAQ;AACP,MAAA,OAAO,OAAA;AAAA,IACR;AAAA,EACD,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,uBACC,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,SAAA;AAAA,MACP,OAAA,EAAQ,MAAA;AAAA,MACR,EAAA,EAAI,CAAA;AAAA,MACJ,iBAAA,EAAmB,CAAA;AAAA,MAElB,QAAA,EAAA;AAAA;AAAA,GACF;AAEF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/atoms/datetime/utils/relative-date-time-utils.ts","../src/atoms/status-badge/status-badge.tsx"],"names":[],"mappings":";;;;;;;;;AAKA,KAAA,CAAM,OAAO,SAAS,CAAA;AACtB,KAAA,CAAM,OAAO,YAAY,CAAA;AACzB,KAAA,CAAM,OAAO,cAAc,CAAA;AAmBpB,SAAS,sBAAA,CACf,IAAA,EACA,QAAA,mBAAqB,IAAI,MAAK,EAC7B;AACD,EAAA,OAAO,KAAA,CAAM,IAAI,CAAA,CAAE,IAAA,CAAK,QAAQ,CAAA;AACjC;AAmBO,SAAS,mCAAA,CACf,IAAA,EACA,QAAA,mBAAqB,IAAI,MAAK,EAC7B;AACD,EAAA,MAAM,UAAU,KAAA,CAAM,IAAI,CAAA,CAAE,MAAA,CAAO,UAAU,KAAK,CAAA;AAElD,EAAA,IAAI,CAAC,OAAA,EAAS;AAGb,IAAA,OAAO,KAAA,CAAM,IAAI,CAAA,CAAE,QAAA,CAAS,QAAA,EAAU;AAAA,MACrC,QAAA,EAAU;AAAA,KACV,CAAA;AAAA,EACF;AAGA,EAAA,OAAO,sBAAA,CAAuB,MAAM,QAAQ,CAAA;AAC7C;ACtDO,IAAM,WAAA,GAA0C,CAAC,KAAA,KAAU;AACjE,EAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAM,GAAI,KAAA;AAEzB,EAAA,MAAM,SAAA,GAAY,QAAQ,MAAM;AAC/B,IAAA,IAAI;AACH,MAAA,OAAO,cAAc,KAAK,CAAA;AAAA,IAC3B,CAAA,CAAA,MAAQ;AACP,MAAA,OAAO,OAAA;AAAA,IACR;AAAA,EACD,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,uBACC,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,SAAA;AAAA,MACP,OAAA,EAAQ,MAAA;AAAA,MACR,EAAA,EAAI,CAAA;AAAA,MACJ,iBAAA,EAAmB,CAAA;AAAA,MAElB,QAAA,EAAA;AAAA;AAAA,GACF;AAEF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA","file":"chunk-ELQTHWXC.js","sourcesContent":["import dayjs from \"dayjs\";\nimport calendarPlugin from \"dayjs/plugin/calendar.js\";\nimport relativeTime from \"dayjs/plugin/relativeTime.js\";\nimport utcPlugin from \"dayjs/plugin/utc.js\";\n\ndayjs.extend(utcPlugin);\ndayjs.extend(relativeTime);\ndayjs.extend(calendarPlugin);\n\nimport type { DateType } from \"../types\";\n\n/**\n * A function that will return a string with how far a given date is in the past or future,\n * using a baseDate as reference. If the baseDate is not passed, the function will use today as reference.\n *\n * @param date - the date to be formatted\n * @param baseDate - the date that should be used as a reference (default is \"today\")\n * @returns a relative date\n *\n * @example\n * // Considering today as 18.08.2021\n * formatRelativeDateTime('2021-08-17T15:45:00') // returns \"a day ago\"\n *\n * @example\n * formatRelativeDateTime('2021-08-17T15:45:00', '2021-08-16') // returns \"in a day\"\n */\nexport function formatRelativeDateTime(\n\tdate: DateType,\n\tbaseDate: DateType = new Date(),\n) {\n\treturn dayjs(date).from(baseDate);\n}\n\n/**\n * A function that formats a date relative to Today or to the `baseDate` if passed.\n * If the date is not today, it will return a string with \"Yesterday ...\", \"Tomorrow ...\", etc\n * If the date is not in the current week, it return a string with \"DD MMM YYYY\" format\n * If the date is today, it will return a string with \"... ago\" or \"in ...\"\n *\n * @param date - the date to be formatted\n * @param baseDate - the date that should be used as a reference (default is \"today\")\n * @returns a relative date\n *\n * @example\n * // Considering today as 18.08.2021\n * formatRelativeToCurrentWeekDateTime('2021-08-17T15:45:00') // returns \"Yesterday at 3:45 PM\"\n *\n * @example\n * formatRelativeToCurrentWeekDateTime('2021-08-17T15:45:00', '2021-08-16') // returns \"Tomorrow at 3:45 PM\"\n */\nexport function formatRelativeToCurrentWeekDateTime(\n\tdate: DateType,\n\tbaseDate: DateType = new Date(),\n) {\n\tconst isToday = dayjs(date).isSame(baseDate, \"day\");\n\n\tif (!isToday) {\n\t\t// if the date is not today, we display it with \"Yesterday\", \"Tomorrow\", etc.\n\t\t// and if the date is not in the current week then it will display \"17 Aug 2021\"\n\t\treturn dayjs(date).calendar(baseDate, {\n\t\t\tsameElse: \"DD MMM YYYY\",\n\t\t});\n\t}\n\n\t// returns \"... ago\"\n\treturn formatRelativeDateTime(date, baseDate);\n}\n","import { readableColor } from \"color2k\";\nimport type React from \"react\";\nimport { useMemo } from \"react\";\nimport { Badge } from \"../../primitives/badge\";\n\nexport interface StatusBadgeProps {\n\t/** The display label for the badge */\n\tlabel: string;\n\t/** The background color for the badge (hex format, e.g. \"#ff0000\") */\n\tcolor: string;\n}\n\nexport const StatusBadge: React.FC<StatusBadgeProps> = (props) => {\n\tconst { label, color } = props;\n\n\tconst textColor = useMemo(() => {\n\t\ttry {\n\t\t\treturn readableColor(color);\n\t\t} catch {\n\t\t\treturn \"black\";\n\t\t}\n\t}, [color]);\n\n\treturn (\n\t\t<Badge\n\t\t\tbg={color}\n\t\t\tcolor={textColor}\n\t\t\trounded=\"base\"\n\t\t\tpx={2}\n\t\t\tmarginInlineStart={1}\n\t\t>\n\t\t\t{label}\n\t\t</Badge>\n\t);\n};\n\nStatusBadge.displayName = \"StatusBadge\";\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { useRecipe, chakra } from '@chakra-ui/react';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
|
|
4
|
+
// src/primitives/prose.tsx
|
|
5
|
+
var Prose = ({
|
|
6
|
+
ref,
|
|
7
|
+
size,
|
|
8
|
+
...props
|
|
9
|
+
}) => {
|
|
10
|
+
const recipe = useRecipe({ key: "prose" });
|
|
11
|
+
const styles = recipe({ size });
|
|
12
|
+
return /* @__PURE__ */ jsx(chakra.div, { ref, css: styles, ...props });
|
|
13
|
+
};
|
|
14
|
+
Prose.displayName = "Prose";
|
|
15
|
+
|
|
16
|
+
export { Prose };
|
|
17
|
+
//# sourceMappingURL=chunk-VOGT33LU.js.map
|
|
18
|
+
//# sourceMappingURL=chunk-VOGT33LU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/primitives/prose.tsx"],"names":[],"mappings":";;;;AAOO,IAAM,QAAQ,CAAC;AAAA,EACrB,GAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAG;AACJ,CAAA,KAAwD;AACvD,EAAA,MAAM,MAAA,GAAS,SAAA,CAAU,EAAE,GAAA,EAAK,SAAS,CAAA;AACzC,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,EAAE,IAAA,EAAM,CAAA;AAC9B,EAAA,uBAAO,GAAA,CAAC,OAAO,GAAA,EAAP,EAAW,KAAU,GAAA,EAAK,MAAA,EAAS,GAAG,KAAA,EAAO,CAAA;AACtD;AACA,KAAA,CAAM,WAAA,GAAc,OAAA","file":"chunk-VOGT33LU.js","sourcesContent":["import { chakra, type HTMLChakraProps, useRecipe } from \"@chakra-ui/react\";\nimport type React from \"react\";\n\nexport interface ProseProps extends HTMLChakraProps<\"div\"> {\n\tsize?: \"md\" | \"lg\";\n}\n\nexport const Prose = ({\n\tref,\n\tsize,\n\t...props\n}: ProseProps & { ref?: React.Ref<HTMLDivElement> }) => {\n\tconst recipe = useRecipe({ key: \"prose\" });\n\tconst styles = recipe({ size });\n\treturn <chakra.div ref={ref} css={styles} {...props} />;\n};\nProse.displayName = \"Prose\";\n"]}
|
|
@@ -153,7 +153,6 @@ interface ContextRailProps {
|
|
|
153
153
|
interface ContextRailHeaderProps {
|
|
154
154
|
eyebrow?: React__default.ReactNode;
|
|
155
155
|
title: React__default.ReactNode;
|
|
156
|
-
onClose?: () => void;
|
|
157
156
|
}
|
|
158
157
|
interface ContextRailSectionProps {
|
|
159
158
|
id: string;
|
|
@@ -168,7 +167,7 @@ declare const ContextRail: {
|
|
|
168
167
|
displayName: string;
|
|
169
168
|
} & {
|
|
170
169
|
Header: {
|
|
171
|
-
({ eyebrow, title
|
|
170
|
+
({ eyebrow, title }: ContextRailHeaderProps): react_jsx_runtime.JSX.Element;
|
|
172
171
|
displayName: string;
|
|
173
172
|
};
|
|
174
173
|
Section: {
|
|
@@ -298,6 +297,12 @@ interface StatusBadgeCellProps {
|
|
|
298
297
|
detail?: string | null;
|
|
299
298
|
/** Color for the detail text. @default "fg.error" */
|
|
300
299
|
detailColor?: string;
|
|
300
|
+
/**
|
|
301
|
+
* Optional tooltip content shown on hover/focus over the badge. Useful
|
|
302
|
+
* for status descriptions, full JSON payloads, or contextual hints that
|
|
303
|
+
* don't fit on the badge label.
|
|
304
|
+
*/
|
|
305
|
+
tooltip?: React__default.ReactNode;
|
|
301
306
|
}
|
|
302
307
|
declare const StatusBadgeCell: React__default.FC<StatusBadgeCellProps>;
|
|
303
308
|
|
|
@@ -314,6 +319,12 @@ declare const SwitchCell: React__default.FC<SwitchCellProps>;
|
|
|
314
319
|
interface TruncatedTextCellProps {
|
|
315
320
|
value: string | null | undefined;
|
|
316
321
|
maxLength?: number;
|
|
322
|
+
/**
|
|
323
|
+
* Optional secondary line rendered below the primary value in smaller,
|
|
324
|
+
* muted text (e.g. "created 2 days ago", target ID, contextual hint).
|
|
325
|
+
* Sub-text is `lineClamp={1}` and is not affected by `maxLength`.
|
|
326
|
+
*/
|
|
327
|
+
subText?: React__default.ReactNode;
|
|
317
328
|
}
|
|
318
329
|
declare const TruncatedTextCell: React__default.FC<TruncatedTextCellProps>;
|
|
319
330
|
|
package/dist/components/index.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { Collapsible, Skeleton, Separator, Checkbox as Checkbox$1 } from '../chunk-TXGJ7BNX.js';
|
|
2
|
-
import { formatRelativeDateTime, StatusBadge } from '../chunk-
|
|
3
|
-
import { MenuItem, MenuRoot, MenuTrigger, MenuContent, Tooltip, Table } from '../chunk-
|
|
2
|
+
import { formatRelativeDateTime, StatusBadge } from '../chunk-ELQTHWXC.js';
|
|
3
|
+
import { MenuItem, MenuRoot, MenuTrigger, MenuContent, Tooltip, Table } from '../chunk-2ZWZ2WAS.js';
|
|
4
4
|
import { Popover, PopoverTrigger, PopoverContent, PopoverBody, Switch } from '../chunk-WQIEF5N3.js';
|
|
5
5
|
import { text_input_default } from '../chunk-OU6H3KU4.js';
|
|
6
6
|
import { Button, IconButton } from '../chunk-JS7ZEZV3.js';
|
|
7
7
|
export { AuthCard, PageHeader } from '../chunk-D5ICTOCW.js';
|
|
8
|
-
import { Box, Flex,
|
|
8
|
+
import { Box, Flex, Heading, Text, HStack, Grid, GridItem, Code, Link, VStack, Spacer, Stack } from '../chunk-G4QMIXLC.js';
|
|
9
9
|
import { PanelRightOpen, PanelRightClose, ChevronRight, Search, PanelLeftOpen, PanelLeftClose, X, Ellipsis, Plus, ChevronLeft, ArrowUp, ArrowDown, ArrowUpDown, ChevronDown, Check, Upload } from 'lucide-react';
|
|
10
10
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
11
|
-
import { createContext, Timeline, TreeView, Card as Card$1, Menu, Portal, Checkbox, Drawer, ButtonGroup, Dialog, useSlotRecipe, chakra } from '@chakra-ui/react';
|
|
11
|
+
import { createContext as createContext$1, Timeline, TreeView, Card as Card$1, Menu, Portal, Checkbox, Drawer, ButtonGroup, Dialog, useSlotRecipe, chakra } from '@chakra-ui/react';
|
|
12
12
|
export { createTreeCollection } from '@chakra-ui/react';
|
|
13
|
-
import React3, { createContext
|
|
13
|
+
import React3, { createContext, useState, useEffect, useMemo, useContext, useRef, Children, useCallback } from 'react';
|
|
14
14
|
import dayjs from 'dayjs';
|
|
15
15
|
import { Link as Link$1 } from 'react-router-dom';
|
|
16
16
|
import { useReactTable, getSortedRowModel, getCoreRowModel, flexRender } from '@tanstack/react-table';
|
|
@@ -393,6 +393,23 @@ ChipPicker.displayName = "ChipPicker";
|
|
|
393
393
|
var COLLAPSED_WIDTH = "44px";
|
|
394
394
|
var EXPANDED_WIDTH = "360px";
|
|
395
395
|
var COLLAPSE_BREAKPOINT = 1440;
|
|
396
|
+
var RailRootContext = createContext(false);
|
|
397
|
+
function isDevMode() {
|
|
398
|
+
const proc = globalThis.process;
|
|
399
|
+
return proc?.env?.NODE_ENV !== "production";
|
|
400
|
+
}
|
|
401
|
+
function useWarnIfOutsideRailRoot(componentName) {
|
|
402
|
+
const insideRoot = useContext(RailRootContext);
|
|
403
|
+
const warnedRef = useRef(false);
|
|
404
|
+
useEffect(() => {
|
|
405
|
+
if (!insideRoot && !warnedRef.current && isDevMode()) {
|
|
406
|
+
warnedRef.current = true;
|
|
407
|
+
console.warn(
|
|
408
|
+
`${componentName} was rendered outside <ContextRail>. Wrap rail content in <ContextRail> to get column width, collapse toggle, inner padding, and persistence. See docs/page-patterns.md.`
|
|
409
|
+
);
|
|
410
|
+
}
|
|
411
|
+
}, [insideRoot, componentName]);
|
|
412
|
+
}
|
|
396
413
|
function getInitialCollapsed(storageKey) {
|
|
397
414
|
if (typeof window === "undefined") return false;
|
|
398
415
|
if (storageKey) {
|
|
@@ -411,16 +428,13 @@ var ContextRailRoot = ({ storageKey, children }) => {
|
|
|
411
428
|
window.localStorage.setItem(storageKey, String(collapsed));
|
|
412
429
|
}
|
|
413
430
|
}, [collapsed, storageKey]);
|
|
414
|
-
return /* @__PURE__ */ jsx(
|
|
431
|
+
return /* @__PURE__ */ jsx(RailRootContext.Provider, { value: true, children: /* @__PURE__ */ jsx(
|
|
415
432
|
Box,
|
|
416
433
|
{
|
|
417
434
|
"data-testid": "context-rail",
|
|
418
435
|
"data-collapsed": collapsed ? "true" : "false",
|
|
419
436
|
w: collapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH,
|
|
420
437
|
minH: "100vh",
|
|
421
|
-
bg: "bg-surface",
|
|
422
|
-
borderLeftWidth: "1px",
|
|
423
|
-
borderLeftColor: "border",
|
|
424
438
|
transition: "width 250ms ease-out",
|
|
425
439
|
overflow: "hidden",
|
|
426
440
|
position: "relative",
|
|
@@ -449,38 +463,37 @@ var ContextRailRoot = ({ storageKey, children }) => {
|
|
|
449
463
|
/* @__PURE__ */ jsx(Box, { flex: "1", overflowY: "auto", px: "4", pb: "4", children })
|
|
450
464
|
] })
|
|
451
465
|
}
|
|
452
|
-
);
|
|
466
|
+
) });
|
|
453
467
|
};
|
|
454
468
|
ContextRailRoot.displayName = "ContextRail";
|
|
455
|
-
var ContextRailHeader = ({
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
] });
|
|
469
|
+
var ContextRailHeader = ({ eyebrow, title }) => {
|
|
470
|
+
useWarnIfOutsideRailRoot("ContextRail.Header");
|
|
471
|
+
return /* @__PURE__ */ jsxs(Box, { mb: "4", pb: "3", borderBottomWidth: "1px", borderBottomColor: "border", children: [
|
|
472
|
+
eyebrow && /* @__PURE__ */ jsx(
|
|
473
|
+
Text,
|
|
474
|
+
{
|
|
475
|
+
fontSize: "2xs",
|
|
476
|
+
fontWeight: "semibold",
|
|
477
|
+
letterSpacing: "wider",
|
|
478
|
+
textTransform: "uppercase",
|
|
479
|
+
color: "muted",
|
|
480
|
+
mb: "1",
|
|
481
|
+
children: eyebrow
|
|
482
|
+
}
|
|
483
|
+
),
|
|
484
|
+
/* @__PURE__ */ jsx(
|
|
485
|
+
Heading,
|
|
486
|
+
{
|
|
487
|
+
as: "h2",
|
|
488
|
+
fontSize: "lg",
|
|
489
|
+
fontWeight: "semibold",
|
|
490
|
+
color: "default",
|
|
491
|
+
letterSpacing: "-0.01em",
|
|
492
|
+
children: title
|
|
493
|
+
}
|
|
494
|
+
)
|
|
495
|
+
] });
|
|
496
|
+
};
|
|
484
497
|
ContextRailHeader.displayName = "ContextRail.Header";
|
|
485
498
|
var ContextRailSection = ({
|
|
486
499
|
id,
|
|
@@ -490,6 +503,7 @@ var ContextRailSection = ({
|
|
|
490
503
|
action,
|
|
491
504
|
children
|
|
492
505
|
}) => {
|
|
506
|
+
useWarnIfOutsideRailRoot("ContextRail.Section");
|
|
493
507
|
const [open, setOpen] = useState(defaultOpen);
|
|
494
508
|
return /* @__PURE__ */ jsxs(
|
|
495
509
|
Box,
|
|
@@ -777,18 +791,22 @@ var StatusBadgeCell = ({
|
|
|
777
791
|
colorMap,
|
|
778
792
|
fallbackColor = "gray",
|
|
779
793
|
detail,
|
|
780
|
-
detailColor = "fg.error"
|
|
794
|
+
detailColor = "fg.error",
|
|
795
|
+
tooltip
|
|
781
796
|
}) => {
|
|
782
797
|
if (value == null) return /* @__PURE__ */ jsx("span", { children: emptyCellValue });
|
|
783
798
|
const color = colorMap?.[value] ?? fallbackColor;
|
|
784
|
-
|
|
799
|
+
let badge = /* @__PURE__ */ jsx(StatusBadge, { label: value, color });
|
|
800
|
+
if (tooltip != null) {
|
|
801
|
+
badge = /* @__PURE__ */ jsx(Tooltip, { content: tooltip, showArrow: true, children: /* @__PURE__ */ jsx("span", { children: badge }) });
|
|
802
|
+
}
|
|
785
803
|
if (detail) {
|
|
786
804
|
return /* @__PURE__ */ jsxs(VStack, { align: "start", gap: 0.5, children: [
|
|
787
805
|
badge,
|
|
788
806
|
/* @__PURE__ */ jsx(Text, { fontSize: "xs", color: detailColor, children: detail })
|
|
789
807
|
] });
|
|
790
808
|
}
|
|
791
|
-
return badge;
|
|
809
|
+
return /* @__PURE__ */ jsx(Fragment, { children: badge });
|
|
792
810
|
};
|
|
793
811
|
StatusBadgeCell.displayName = "StatusBadgeCell";
|
|
794
812
|
var SwitchCell = ({
|
|
@@ -813,12 +831,18 @@ var SwitchCell = ({
|
|
|
813
831
|
SwitchCell.displayName = "SwitchCell";
|
|
814
832
|
var TruncatedTextCell = ({
|
|
815
833
|
value,
|
|
816
|
-
maxLength
|
|
834
|
+
maxLength,
|
|
835
|
+
subText
|
|
817
836
|
}) => {
|
|
818
837
|
if (value == null) return /* @__PURE__ */ jsx("span", { children: emptyCellValue });
|
|
819
838
|
const isTruncated = maxLength != null && value.length > maxLength;
|
|
820
839
|
const display = isTruncated ? truncateText(value, maxLength) : value;
|
|
821
|
-
|
|
840
|
+
const primary = /* @__PURE__ */ jsx("span", { title: isTruncated ? value : void 0, children: display });
|
|
841
|
+
if (subText == null) return primary;
|
|
842
|
+
return /* @__PURE__ */ jsxs(VStack, { align: "start", gap: 0, children: [
|
|
843
|
+
primary,
|
|
844
|
+
/* @__PURE__ */ jsx(Text, { fontSize: "xs", color: "fg.muted", lineClamp: 1, children: subText })
|
|
845
|
+
] });
|
|
822
846
|
};
|
|
823
847
|
TruncatedTextCell.displayName = "TruncatedTextCell";
|
|
824
848
|
var UrlCell = ({ value, label }) => {
|
|
@@ -1968,7 +1992,7 @@ var SidebarSection2 = ({
|
|
|
1968
1992
|
] });
|
|
1969
1993
|
};
|
|
1970
1994
|
SidebarSection2.displayName = "SidebarSection";
|
|
1971
|
-
var [StepperProvider, useStepperContext] = createContext({
|
|
1995
|
+
var [StepperProvider, useStepperContext] = createContext$1({
|
|
1972
1996
|
name: "StepperContext",
|
|
1973
1997
|
errorMessage: "useStepperContext: `context` is undefined. Seems you forgot to wrap stepper components in `<Stepper />`"
|
|
1974
1998
|
});
|
|
@@ -2074,7 +2098,7 @@ function getChildrenOfType(children, type) {
|
|
|
2074
2098
|
}
|
|
2075
2099
|
var dataAttr = (condition) => condition ? "" : void 0;
|
|
2076
2100
|
var cx = (...classes) => classes.filter(Boolean).join(" ");
|
|
2077
|
-
var StylesContext = createContext
|
|
2101
|
+
var StylesContext = createContext({});
|
|
2078
2102
|
var useStyles = () => useContext(StylesContext);
|
|
2079
2103
|
var Stepper = ({
|
|
2080
2104
|
ref,
|