agentic-ds-kit 0.2.0 → 0.2.2
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 +10 -0
- package/contracts/scoreboard.json +2 -2
- package/contracts/section.json +9 -5
- package/dist/ui/Accordion/Accordion.module.js +1 -1
- package/dist/ui/Alert/Alert.module.js +1 -1
- package/dist/ui/AlertDialog/AlertDialog.module.js +1 -1
- package/dist/ui/AppHeader/AppHeader.module.js +1 -1
- package/dist/ui/AppNav/AppNav.module.js +1 -1
- package/dist/ui/Avatar/Avatar.module.js +1 -1
- package/dist/ui/AvatarGroup/AvatarGroup.module.js +1 -1
- package/dist/ui/Badge/Badge.module.js +1 -1
- package/dist/ui/BarChart/BarChart.module.js +1 -1
- package/dist/ui/Breadcrumb/Breadcrumb.module.js +1 -1
- package/dist/ui/Button/Button.module.js +1 -1
- package/dist/ui/ButtonGroup/ButtonGroup.module.js +1 -1
- package/dist/ui/Calendar/Calendar.module.js +1 -1
- package/dist/ui/Card/Card.module.js +1 -1
- package/dist/ui/Carousel/Carousel.module.js +1 -1
- package/dist/ui/Cell/Cell.module.js +1 -1
- package/dist/ui/Chat/Chat.module.js +1 -1
- package/dist/ui/Checkbox/Checkbox.module.js +1 -1
- package/dist/ui/Collapsible/Collapsible.module.js +1 -1
- package/dist/ui/Command/Command.module.js +1 -1
- package/dist/ui/DataTable/DataTable.module.js +1 -1
- package/dist/ui/DatePicker/DatePicker.module.js +1 -1
- package/dist/ui/Drawer/Drawer.module.js +1 -1
- package/dist/ui/DropdownMenu/DropdownMenu.module.js +1 -1
- package/dist/ui/Empty/Empty.module.js +1 -1
- package/dist/ui/Field/Field.module.js +1 -1
- package/dist/ui/FieldSet/FieldSet.module.js +1 -1
- package/dist/ui/HeaderCell/HeaderCell.module.js +1 -1
- package/dist/ui/Input/Input.module.js +1 -1
- package/dist/ui/InputOTP/InputOTP.module.js +1 -1
- package/dist/ui/InsightCard/InsightCard.module.js +1 -1
- package/dist/ui/LineChart/LineChart.module.js +1 -1
- package/dist/ui/LoadingAnimation/LoadingAnimation.module.js +1 -1
- package/dist/ui/Modal/Modal.module.js +1 -1
- package/dist/ui/ModalCard/ModalCard.module.js +1 -1
- package/dist/ui/NavigationMenu/NavigationMenu.module.js +1 -1
- package/dist/ui/NumberTransition/NumberTransition.module.js +1 -1
- package/dist/ui/PageHeader/PageHeader.module.js +1 -1
- package/dist/ui/Pagination/Pagination.module.js +1 -1
- package/dist/ui/PieChart/PieChart.module.js +1 -1
- package/dist/ui/Progress/Progress.module.js +1 -1
- package/dist/ui/ProgressSteps/ProgressSteps.module.js +1 -1
- package/dist/ui/RadioGroup/RadioGroup.module.js +1 -1
- package/dist/ui/Scoreboard/Scoreboard.kit.css +55 -0
- package/dist/ui/Scoreboard/Scoreboard.module.js +5 -5
- package/dist/ui/Scoreboard/Scoreboard.module.js.map +1 -1
- package/dist/ui/Scorecard/Scorecard.module.js +1 -1
- package/dist/ui/Section/{Section.module.css → Section.kit.css} +27 -20
- package/dist/ui/Section/Section.module.js +11 -11
- package/dist/ui/Section/Section.module.js.map +1 -1
- package/dist/ui/ShimmerText/ShimmerText.module.js +1 -1
- package/dist/ui/SideNav/SideNav.module.js +1 -1
- package/dist/ui/Slider/Slider.module.js +1 -1
- package/dist/ui/Spinner/Spinner.module.js +1 -1
- package/dist/ui/Switch/Switch.module.js +1 -1
- package/dist/ui/Table/Table.module.js +1 -1
- package/dist/ui/Tabs/Tabs.module.js +1 -1
- package/dist/ui/Textarea/Textarea.module.js +1 -1
- package/dist/ui/ThinkingAnimation/ThinkingAnimation.module.js +1 -1
- package/dist/ui/Timeline/Timeline.module.js +1 -1
- package/dist/ui/Toast/Toast.module.js +1 -1
- package/dist/ui/Tooltip/Tooltip.module.js +1 -1
- package/dist/ui/patterns/ActivityPattern/ActivityPattern.js +0 -1
- package/dist/ui/patterns/ActivityPattern/ActivityPattern.js.map +1 -1
- package/dist/ui/patterns/ActivityPattern/TaskDrawer.module.js +1 -1
- package/dist/ui/patterns/AssistantWorkspacePattern/AssistantWorkspacePattern.module.js +1 -1
- package/dist/ui/patterns/DashboardPattern/DashboardPattern.js +0 -1
- package/dist/ui/patterns/DashboardPattern/DashboardPattern.js.map +1 -1
- package/dist/ui/patterns/InboxPattern/InboxPattern.js +0 -1
- package/dist/ui/patterns/InboxPattern/InboxPattern.js.map +1 -1
- package/dist/ui/patterns/InboxPattern/InboxPattern.module.js +1 -1
- package/dist/ui/patterns/ListDetailPattern/ListDetailPattern.module.js +1 -1
- package/dist/ui/patterns/SettingsFormPattern/SettingsFormPattern.module.js +1 -1
- package/dist/ui/shared/ChartFrame.js +1 -1
- package/dist/ui/shared/ChartFrame.js.map +1 -1
- package/dist/ui/shared/{ChartFrame.module.css → ChartFrame.kit.css} +55 -41
- package/dist/ui/shared/ChartFrame.module.js +34 -33
- package/dist/ui/shared/ChartFrame.module.js.map +1 -1
- package/dist/ui/shared/controls.module.js +1 -1
- package/package.json +1 -1
- package/dist/ui/Scoreboard/Scoreboard.module.css +0 -53
- /package/dist/ui/Accordion/{Accordion.module.css → Accordion.kit.css} +0 -0
- /package/dist/ui/Alert/{Alert.module.css → Alert.kit.css} +0 -0
- /package/dist/ui/AlertDialog/{AlertDialog.module.css → AlertDialog.kit.css} +0 -0
- /package/dist/ui/AppHeader/{AppHeader.module.css → AppHeader.kit.css} +0 -0
- /package/dist/ui/AppNav/{AppNav.module.css → AppNav.kit.css} +0 -0
- /package/dist/ui/Avatar/{Avatar.module.css → Avatar.kit.css} +0 -0
- /package/dist/ui/AvatarGroup/{AvatarGroup.module.css → AvatarGroup.kit.css} +0 -0
- /package/dist/ui/Badge/{Badge.module.css → Badge.kit.css} +0 -0
- /package/dist/ui/BarChart/{BarChart.module.css → BarChart.kit.css} +0 -0
- /package/dist/ui/Breadcrumb/{Breadcrumb.module.css → Breadcrumb.kit.css} +0 -0
- /package/dist/ui/Button/{Button.module.css → Button.kit.css} +0 -0
- /package/dist/ui/ButtonGroup/{ButtonGroup.module.css → ButtonGroup.kit.css} +0 -0
- /package/dist/ui/Calendar/{Calendar.module.css → Calendar.kit.css} +0 -0
- /package/dist/ui/Card/{Card.module.css → Card.kit.css} +0 -0
- /package/dist/ui/Carousel/{Carousel.module.css → Carousel.kit.css} +0 -0
- /package/dist/ui/Cell/{Cell.module.css → Cell.kit.css} +0 -0
- /package/dist/ui/Chat/{Chat.module.css → Chat.kit.css} +0 -0
- /package/dist/ui/Checkbox/{Checkbox.module.css → Checkbox.kit.css} +0 -0
- /package/dist/ui/Collapsible/{Collapsible.module.css → Collapsible.kit.css} +0 -0
- /package/dist/ui/Command/{Command.module.css → Command.kit.css} +0 -0
- /package/dist/ui/DataTable/{DataTable.module.css → DataTable.kit.css} +0 -0
- /package/dist/ui/DatePicker/{DatePicker.module.css → DatePicker.kit.css} +0 -0
- /package/dist/ui/Drawer/{Drawer.module.css → Drawer.kit.css} +0 -0
- /package/dist/ui/DropdownMenu/{DropdownMenu.module.css → DropdownMenu.kit.css} +0 -0
- /package/dist/ui/Empty/{Empty.module.css → Empty.kit.css} +0 -0
- /package/dist/ui/Field/{Field.module.css → Field.kit.css} +0 -0
- /package/dist/ui/FieldSet/{FieldSet.module.css → FieldSet.kit.css} +0 -0
- /package/dist/ui/HeaderCell/{HeaderCell.module.css → HeaderCell.kit.css} +0 -0
- /package/dist/ui/Input/{Input.module.css → Input.kit.css} +0 -0
- /package/dist/ui/InputOTP/{InputOTP.module.css → InputOTP.kit.css} +0 -0
- /package/dist/ui/InsightCard/{InsightCard.module.css → InsightCard.kit.css} +0 -0
- /package/dist/ui/LineChart/{LineChart.module.css → LineChart.kit.css} +0 -0
- /package/dist/ui/LoadingAnimation/{LoadingAnimation.module.css → LoadingAnimation.kit.css} +0 -0
- /package/dist/ui/Modal/{Modal.module.css → Modal.kit.css} +0 -0
- /package/dist/ui/ModalCard/{ModalCard.module.css → ModalCard.kit.css} +0 -0
- /package/dist/ui/NavigationMenu/{NavigationMenu.module.css → NavigationMenu.kit.css} +0 -0
- /package/dist/ui/NumberTransition/{NumberTransition.module.css → NumberTransition.kit.css} +0 -0
- /package/dist/ui/PageHeader/{PageHeader.module.css → PageHeader.kit.css} +0 -0
- /package/dist/ui/Pagination/{Pagination.module.css → Pagination.kit.css} +0 -0
- /package/dist/ui/PieChart/{PieChart.module.css → PieChart.kit.css} +0 -0
- /package/dist/ui/Progress/{Progress.module.css → Progress.kit.css} +0 -0
- /package/dist/ui/ProgressSteps/{ProgressSteps.module.css → ProgressSteps.kit.css} +0 -0
- /package/dist/ui/RadioGroup/{RadioGroup.module.css → RadioGroup.kit.css} +0 -0
- /package/dist/ui/Scorecard/{Scorecard.module.css → Scorecard.kit.css} +0 -0
- /package/dist/ui/ShimmerText/{ShimmerText.module.css → ShimmerText.kit.css} +0 -0
- /package/dist/ui/SideNav/{SideNav.module.css → SideNav.kit.css} +0 -0
- /package/dist/ui/Slider/{Slider.module.css → Slider.kit.css} +0 -0
- /package/dist/ui/Spinner/{Spinner.module.css → Spinner.kit.css} +0 -0
- /package/dist/ui/Switch/{Switch.module.css → Switch.kit.css} +0 -0
- /package/dist/ui/Table/{Table.module.css → Table.kit.css} +0 -0
- /package/dist/ui/Tabs/{Tabs.module.css → Tabs.kit.css} +0 -0
- /package/dist/ui/Textarea/{Textarea.module.css → Textarea.kit.css} +0 -0
- /package/dist/ui/ThinkingAnimation/{ThinkingAnimation.module.css → ThinkingAnimation.kit.css} +0 -0
- /package/dist/ui/Timeline/{Timeline.module.css → Timeline.kit.css} +0 -0
- /package/dist/ui/Toast/{Toast.module.css → Toast.kit.css} +0 -0
- /package/dist/ui/Tooltip/{Tooltip.module.css → Tooltip.kit.css} +0 -0
- /package/dist/ui/patterns/ActivityPattern/{TaskDrawer.module.css → TaskDrawer.kit.css} +0 -0
- /package/dist/ui/patterns/AssistantWorkspacePattern/{AssistantWorkspacePattern.module.css → AssistantWorkspacePattern.kit.css} +0 -0
- /package/dist/ui/patterns/InboxPattern/{InboxPattern.module.css → InboxPattern.kit.css} +0 -0
- /package/dist/ui/patterns/ListDetailPattern/{ListDetailPattern.module.css → ListDetailPattern.kit.css} +0 -0
- /package/dist/ui/patterns/SettingsFormPattern/{SettingsFormPattern.module.css → SettingsFormPattern.kit.css} +0 -0
- /package/dist/ui/shared/{controls.module.css → controls.kit.css} +0 -0
|
@@ -1,48 +1,55 @@
|
|
|
1
|
-
.
|
|
1
|
+
._section_roa75_1 {
|
|
2
2
|
--section-space: var(--space-section-md);
|
|
3
|
-
--section-header-gap: var(--space-stack-
|
|
3
|
+
--section-header-gap: var(--space-stack-md);
|
|
4
|
+
--section-inset: var(--space-6);
|
|
5
|
+
display: grid;
|
|
6
|
+
gap: var(--section-header-gap);
|
|
4
7
|
width: 100%;
|
|
5
8
|
min-width: 0;
|
|
6
9
|
margin: 0 0 var(--section-space);
|
|
10
|
+
padding: var(--section-inset);
|
|
11
|
+
box-sizing: border-box;
|
|
12
|
+
background: var(--surface-card);
|
|
13
|
+
border: var(--border-width-thin) solid var(--border-faint);
|
|
14
|
+
border-radius: var(--radius-surface-md);
|
|
15
|
+
box-shadow: var(--shadow-sm);
|
|
7
16
|
}
|
|
8
17
|
|
|
9
|
-
.
|
|
18
|
+
._sm_roa75_18 {
|
|
10
19
|
--section-space: var(--space-section-sm);
|
|
11
20
|
--section-header-gap: var(--space-stack-sm);
|
|
21
|
+
--section-inset: var(--space-4);
|
|
12
22
|
}
|
|
13
23
|
|
|
14
|
-
.
|
|
24
|
+
._md_roa75_24 {
|
|
15
25
|
--section-space: var(--space-section-md);
|
|
16
26
|
--section-header-gap: var(--space-stack-md);
|
|
27
|
+
--section-inset: var(--space-6);
|
|
17
28
|
}
|
|
18
29
|
|
|
19
|
-
.
|
|
30
|
+
._lg_roa75_30 {
|
|
20
31
|
--section-space: var(--space-section-lg);
|
|
21
32
|
--section-header-gap: var(--space-stack-lg);
|
|
33
|
+
--section-inset: var(--space-8);
|
|
22
34
|
}
|
|
23
35
|
|
|
24
|
-
.
|
|
36
|
+
._header_roa75_36 {
|
|
25
37
|
display: flex;
|
|
26
38
|
flex-wrap: wrap;
|
|
27
39
|
align-items: flex-start;
|
|
28
40
|
justify-content: space-between;
|
|
29
41
|
gap: var(--space-inline-sm) var(--space-inline-lg);
|
|
30
42
|
margin: 0;
|
|
31
|
-
padding-bottom: var(--section-header-gap);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
._collapsible_16lix_34:has(> ._body_16lix_34[hidden]) ._header_16lix_24 {
|
|
35
|
-
padding-bottom: 0;
|
|
36
43
|
}
|
|
37
44
|
|
|
38
|
-
.
|
|
45
|
+
._heading_roa75_45 {
|
|
39
46
|
display: grid;
|
|
40
47
|
gap: var(--space-stack-xs);
|
|
41
48
|
min-width: 0;
|
|
42
49
|
flex: 1;
|
|
43
50
|
}
|
|
44
51
|
|
|
45
|
-
.
|
|
52
|
+
._title_roa75_52 {
|
|
46
53
|
margin: 0;
|
|
47
54
|
font-family: var(--font-sans);
|
|
48
55
|
font-size: var(--type-size-heading);
|
|
@@ -51,7 +58,7 @@
|
|
|
51
58
|
color: var(--text-primary);
|
|
52
59
|
}
|
|
53
60
|
|
|
54
|
-
.
|
|
61
|
+
._trigger_roa75_61 {
|
|
55
62
|
display: inline-flex;
|
|
56
63
|
align-items: center;
|
|
57
64
|
gap: var(--space-2);
|
|
@@ -66,22 +73,22 @@
|
|
|
66
73
|
cursor: pointer;
|
|
67
74
|
}
|
|
68
75
|
|
|
69
|
-
.
|
|
76
|
+
._trigger_roa75_61:focus-visible {
|
|
70
77
|
outline: var(--border-focus-width) solid var(--focus-ring);
|
|
71
78
|
outline-offset: var(--space-inset-2xs);
|
|
72
79
|
border-radius: var(--radius-control-sm);
|
|
73
80
|
}
|
|
74
81
|
|
|
75
|
-
.
|
|
82
|
+
._chevron_roa75_82 {
|
|
76
83
|
flex-shrink: 0;
|
|
77
84
|
color: var(--icon-muted);
|
|
78
85
|
}
|
|
79
86
|
|
|
80
|
-
.
|
|
87
|
+
._collapsible_roa75_87 ._description_roa75_87 {
|
|
81
88
|
padding-inline-start: calc(18px + var(--space-2));
|
|
82
89
|
}
|
|
83
90
|
|
|
84
|
-
.
|
|
91
|
+
._description_roa75_87 {
|
|
85
92
|
margin: 0;
|
|
86
93
|
font-family: var(--font-sans);
|
|
87
94
|
font-size: var(--type-size-body-sm);
|
|
@@ -89,7 +96,7 @@
|
|
|
89
96
|
color: var(--text-secondary);
|
|
90
97
|
}
|
|
91
98
|
|
|
92
|
-
.
|
|
99
|
+
._actions_roa75_99 {
|
|
93
100
|
display: flex;
|
|
94
101
|
flex-wrap: wrap;
|
|
95
102
|
align-items: center;
|
|
@@ -97,7 +104,7 @@
|
|
|
97
104
|
flex-shrink: 0;
|
|
98
105
|
}
|
|
99
106
|
|
|
100
|
-
.
|
|
107
|
+
._body_roa75_107 {
|
|
101
108
|
width: 100%;
|
|
102
109
|
min-width: 0;
|
|
103
110
|
}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import "./Section.
|
|
1
|
+
import "./Section.kit.css";
|
|
2
2
|
//#region ui/Section/Section.module.css
|
|
3
|
-
var e = "
|
|
3
|
+
var e = "_section_roa75_1", t = "_sm_roa75_18", n = "_md_roa75_24", r = "_lg_roa75_30", i = "_header_roa75_36", a = "_heading_roa75_45", o = "_title_roa75_52", s = "_trigger_roa75_61", c = "_chevron_roa75_82", l = "_collapsible_roa75_87", u = "_description_roa75_87", d = "_actions_roa75_99", f = "_body_roa75_107", p = {
|
|
4
4
|
section: e,
|
|
5
5
|
sm: t,
|
|
6
6
|
md: n,
|
|
7
7
|
lg: r,
|
|
8
8
|
header: i,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
9
|
+
heading: a,
|
|
10
|
+
title: o,
|
|
11
|
+
trigger: s,
|
|
12
|
+
chevron: c,
|
|
13
|
+
collapsible: l,
|
|
14
|
+
description: u,
|
|
15
|
+
actions: d,
|
|
16
|
+
body: f
|
|
17
17
|
};
|
|
18
18
|
//#endregion
|
|
19
|
-
export {
|
|
19
|
+
export { d as actions, f as body, c as chevron, l as collapsible, p as default, u as description, i as header, a as heading, r as lg, n as md, e as section, t as sm, o as title, s as trigger };
|
|
20
20
|
|
|
21
21
|
//# sourceMappingURL=Section.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Section.module.js","names":[],"sources":["../../../ui/Section/Section.module.css"],"sourcesContent":[".section {\n --section-space: var(--space-section-md);\n --section-header-gap: var(--space-stack-
|
|
1
|
+
{"version":3,"file":"Section.module.js","names":[],"sources":["../../../ui/Section/Section.module.css"],"sourcesContent":[".section {\n --section-space: var(--space-section-md);\n --section-header-gap: var(--space-stack-md);\n --section-inset: var(--space-6);\n display: grid;\n gap: var(--section-header-gap);\n width: 100%;\n min-width: 0;\n margin: 0 0 var(--section-space);\n padding: var(--section-inset);\n box-sizing: border-box;\n background: var(--surface-card);\n border: var(--border-width-thin) solid var(--border-faint);\n border-radius: var(--radius-surface-md);\n box-shadow: var(--shadow-sm);\n}\n\n.sm {\n --section-space: var(--space-section-sm);\n --section-header-gap: var(--space-stack-sm);\n --section-inset: var(--space-4);\n}\n\n.md {\n --section-space: var(--space-section-md);\n --section-header-gap: var(--space-stack-md);\n --section-inset: var(--space-6);\n}\n\n.lg {\n --section-space: var(--space-section-lg);\n --section-header-gap: var(--space-stack-lg);\n --section-inset: var(--space-8);\n}\n\n.header {\n display: flex;\n flex-wrap: wrap;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--space-inline-sm) var(--space-inline-lg);\n margin: 0;\n}\n\n.heading {\n display: grid;\n gap: var(--space-stack-xs);\n min-width: 0;\n flex: 1;\n}\n\n.title {\n margin: 0;\n font-family: var(--font-sans);\n font-size: var(--type-size-heading);\n font-weight: var(--type-weight-heading);\n line-height: var(--type-line-heading);\n color: var(--text-primary);\n}\n\n.trigger {\n display: inline-flex;\n align-items: center;\n gap: var(--space-2);\n max-width: 100%;\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n text-align: start;\n cursor: pointer;\n}\n\n.trigger:focus-visible {\n outline: var(--border-focus-width) solid var(--focus-ring);\n outline-offset: var(--space-inset-2xs);\n border-radius: var(--radius-control-sm);\n}\n\n.chevron {\n flex-shrink: 0;\n color: var(--icon-muted);\n}\n\n.collapsible .description {\n padding-inline-start: calc(18px + var(--space-2));\n}\n\n.description {\n margin: 0;\n font-family: var(--font-sans);\n font-size: var(--type-size-body-sm);\n line-height: var(--type-line-body);\n color: var(--text-secondary);\n}\n\n.actions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--space-inline-sm);\n flex-shrink: 0;\n}\n\n.body {\n width: 100%;\n min-width: 0;\n}\n\n"],"mappings":""}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./SideNav.
|
|
1
|
+
import "./SideNav.kit.css";
|
|
2
2
|
//#region ui/SideNav/SideNav.module.css
|
|
3
3
|
var e = "_root_gf2bo_1", t = "_radiusNone_gf2bo_19", n = "_rootClosed_gf2bo_23", r = "_header_gf2bo_28", i = "_mark_gf2bo_47", a = "_markButton_gf2bo_65", o = "_title_gf2bo_75", s = "_close_gf2bo_101", c = "_nav_gf2bo_107", l = "_section_gf2bo_128", u = "_sectionLabel_gf2bo_135", d = "_list_gf2bo_157", f = "_entry_gf2bo_165", p = "_item_gf2bo_170", m = "_itemDisabled_gf2bo_204", h = "_itemActive_gf2bo_209", g = "_icon_gf2bo_227", _ = "_label_gf2bo_245", v = "_meta_gf2bo_255", y = "_badge_gf2bo_278", b = "_chevron_gf2bo_294", x = "_chevronOpen_gf2bo_302", S = "_submenu_gf2bo_306", C = "_footer_gf2bo_322", w = {
|
|
4
4
|
root: e,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./Slider.
|
|
1
|
+
import "./Slider.kit.css";
|
|
2
2
|
//#region ui/Slider/Slider.module.css
|
|
3
3
|
var e = "_root_1ltek_1", t = "_horizontal_1ltek_7", n = "_vertical_1ltek_12", r = "_track_1ltek_18", i = "_fill_1ltek_35", a = "_thumb_1ltek_51", o = "_disabled_1ltek_92", s = {
|
|
4
4
|
root: e,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./Switch.
|
|
1
|
+
import "./Switch.kit.css";
|
|
2
2
|
//#region ui/Switch/Switch.module.css
|
|
3
3
|
var e = "_labeled_jkowc_9", t = "_label_jkowc_9", n = "_sm_jkowc_31", r = "_md_jkowc_35", i = "_lg_jkowc_39", a = "_control_jkowc_43", o = "_thumb_jkowc_105", s = {
|
|
4
4
|
switch: "_switch_jkowc_1",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./Table.
|
|
1
|
+
import "./Table.kit.css";
|
|
2
2
|
//#region ui/Table/Table.module.css
|
|
3
3
|
var e = "_wrapper_oz0xw_1", t = "_table_oz0xw_8", n = "_caption_oz0xw_19", r = "_tr_oz0xw_30", i = "_thead_oz0xw_35", a = "_tbody_oz0xw_39", o = "_td_oz0xw_43", s = "_tfoot_oz0xw_47", c = "_th_oz0xw_35", l = "_emphasis_oz0xw_90", u = "_numeric_oz0xw_95", d = "_empty_oz0xw_101", f = "_sm_oz0xw_109", p = "_lg_oz0xw_118", m = {
|
|
4
4
|
wrapper: e,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./Tabs.
|
|
1
|
+
import "./Tabs.kit.css";
|
|
2
2
|
//#region ui/Tabs/Tabs.module.css
|
|
3
3
|
var e = "_tabs_vp7e4_1", t = "_listOnly_vp7e4_7", n = "_list_vp7e4_7", r = "_indicator_vp7e4_22", i = "_trigger_vp7e4_36", a = "_content_vp7e4_70", o = "_segmented_vp7e4_80", s = "_line_vp7e4_99", c = "_sm_vp7e4_118", l = "_lg_vp7e4_134", u = {
|
|
4
4
|
tabs: e,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./ThinkingAnimation.
|
|
1
|
+
import "./ThinkingAnimation.kit.css";
|
|
2
2
|
//#region ui/ThinkingAnimation/ThinkingAnimation.module.css
|
|
3
3
|
var e = "_root_r0bhz_1", t = "_dots_r0bhz_10", n = "_dot_r0bhz_10", r = "_sm_r0bhz_32", i = "_lg_r0bhz_42", a = "_label_r0bhz_52", o = {
|
|
4
4
|
root: e,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./Timeline.
|
|
1
|
+
import "./Timeline.kit.css";
|
|
2
2
|
//#region ui/Timeline/Timeline.module.css
|
|
3
3
|
var e = "_timeline_h97rg_1", t = "_step_h97rg_9", n = "_rail_h97rg_16", r = "_dot_h97rg_23", i = "_line_h97rg_32", a = "_now_h97rg_40", o = "_next_h97rg_49", s = "_later_h97rg_54", c = "_copy_h97rg_63", l = "_phase_h97rg_73", u = "_title_h97rg_84", d = "_body_h97rg_93", f = {
|
|
4
4
|
timeline: e,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./Toast.
|
|
1
|
+
import "./Toast.kit.css";
|
|
2
2
|
//#region ui/Toast/Toast.module.css
|
|
3
3
|
var e = "_toast_dc7pz_1", t = "_sm_dc7pz_18", n = "_md_dc7pz_22", r = "_lg_dc7pz_26", i = "_header_dc7pz_30", a = "_lead_dc7pz_37", o = "_icon_dc7pz_45", s = "_info_dc7pz_51", c = "_success_dc7pz_55", l = "_warning_dc7pz_59", u = "_danger_dc7pz_63", d = "_title_dc7pz_67", f = "_description_dc7pz_77", p = "_action_dc7pz_88", m = "_close_dc7pz_93", h = {
|
|
4
4
|
toast: e,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./Tooltip.
|
|
1
|
+
import "./Tooltip.kit.css";
|
|
2
2
|
//#region ui/Tooltip/Tooltip.module.css
|
|
3
3
|
var e = "_wrapper_y2ncd_1", t = "_bubble_y2ncd_6", n = "_open_y2ncd_31", r = "_arrow_y2ncd_39", i = "_top_y2ncd_47", a = "_bottom_y2ncd_62", o = "_left_y2ncd_77", s = "_right_y2ncd_92", c = {
|
|
4
4
|
wrapper: e,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityPattern.js","names":[],"sources":["../../../../ui/patterns/ActivityPattern/ActivityPattern.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState } from \"react\";\nimport { Button } from \"../../Button\";\nimport { ButtonGroup } from \"../../ButtonGroup\";\nimport { Empty } from \"../../Empty\";\nimport { PageHeader } from \"../../PageHeader\";\nimport type { PageHeaderProps } from \"../../PageHeader\";\nimport { Scoreboard } from \"../../Scoreboard\";\nimport { Section } from \"../../Section\";\nimport { Tabs } from \"../../Tabs\";\nimport { ActivityFeed } from \"./ActivityFeed\";\nimport { TaskCards, TaskList } from \"./ActivityTasks\";\nimport { TASK_INSIGHTS, TaskDrawer } from \"./TaskDrawer\";\n\ntype TaskView = \"cards\" | \"list\";\n\nconst ACTIVITY_METRICS = [\n { label: \"Today\", value: \"6\", delta: \"+2\", trend: \"up\" as const, hint: \"vs yesterday\", size: \"lg\" as const, badge: \"Live\", badgeTone: \"success\" as const },\n { label: \"Comments\", value: \"5\", delta: \"+1\", trend: \"up\" as const, hint: \"this sprint\", size: \"lg\" as const, badge: \"Sprint\", badgeTone: \"info\" as const },\n { label: \"Status changes\", value: \"4\", delta: \"0\", trend: \"flat\" as const, hint: \"this sprint\", size: \"lg\" as const, badge: \"Ship\", badgeTone: \"brand\" as const },\n { label: \"Mentions\", value: \"2\", delta: \"+2\", trend: \"up\" as const, hint: \"need reply\", size: \"lg\" as const, badge: \"At risk\", badgeTone: \"danger\" as const },\n];\n\nexport interface ActivityPatternProps {\n breadcrumbs?: PageHeaderProps[\"breadcrumbs\"];\n}\n\nexport function ActivityPattern({ breadcrumbs }: ActivityPatternProps) {\n const [dismissed, setDismissed] = useState<string[]>([]);\n const [openTaskId, setOpenTaskId] = useState<string | null>(null);\n const [taskView, setTaskView] = useState<TaskView>(\"cards\");\n\n const tasks = TASK_INSIGHTS.filter((task) => !dismissed.includes(task.id));\n const openTask = TASK_INSIGHTS.find((task) => task.id === openTaskId) ?? null;\n const taskCount =\n tasks.length === 0\n ? \"All caught up\"\n : `${tasks.length} ${tasks.length === 1 ? \"needs\" : \"need\"} attention`;\n\n function dismissTask(id: string) {\n setDismissed((current) => [...current, id]);\n setOpenTaskId((current) => (current === id ? null : current));\n }\n\n return (\n <div className=\"layout-canvas layout-canvas--sticky-header\">\n <div className=\"layout-header\">\n <PageHeader\n title=\"Activity\"\n subtitle=\"What the team shipped, blocked, and commented on.\"\n breadcrumbs={breadcrumbs}\n />\n </div>\n <div className=\"layout-content\">\n <Section title=\"This week\">\n <Scoreboard
|
|
1
|
+
{"version":3,"file":"ActivityPattern.js","names":[],"sources":["../../../../ui/patterns/ActivityPattern/ActivityPattern.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState } from \"react\";\nimport { Button } from \"../../Button\";\nimport { ButtonGroup } from \"../../ButtonGroup\";\nimport { Empty } from \"../../Empty\";\nimport { PageHeader } from \"../../PageHeader\";\nimport type { PageHeaderProps } from \"../../PageHeader\";\nimport { Scoreboard } from \"../../Scoreboard\";\nimport { Section } from \"../../Section\";\nimport { Tabs } from \"../../Tabs\";\nimport { ActivityFeed } from \"./ActivityFeed\";\nimport { TaskCards, TaskList } from \"./ActivityTasks\";\nimport { TASK_INSIGHTS, TaskDrawer } from \"./TaskDrawer\";\n\ntype TaskView = \"cards\" | \"list\";\n\nconst ACTIVITY_METRICS = [\n { label: \"Today\", value: \"6\", delta: \"+2\", trend: \"up\" as const, hint: \"vs yesterday\", size: \"lg\" as const, badge: \"Live\", badgeTone: \"success\" as const },\n { label: \"Comments\", value: \"5\", delta: \"+1\", trend: \"up\" as const, hint: \"this sprint\", size: \"lg\" as const, badge: \"Sprint\", badgeTone: \"info\" as const },\n { label: \"Status changes\", value: \"4\", delta: \"0\", trend: \"flat\" as const, hint: \"this sprint\", size: \"lg\" as const, badge: \"Ship\", badgeTone: \"brand\" as const },\n { label: \"Mentions\", value: \"2\", delta: \"+2\", trend: \"up\" as const, hint: \"need reply\", size: \"lg\" as const, badge: \"At risk\", badgeTone: \"danger\" as const },\n];\n\nexport interface ActivityPatternProps {\n breadcrumbs?: PageHeaderProps[\"breadcrumbs\"];\n}\n\nexport function ActivityPattern({ breadcrumbs }: ActivityPatternProps) {\n const [dismissed, setDismissed] = useState<string[]>([]);\n const [openTaskId, setOpenTaskId] = useState<string | null>(null);\n const [taskView, setTaskView] = useState<TaskView>(\"cards\");\n\n const tasks = TASK_INSIGHTS.filter((task) => !dismissed.includes(task.id));\n const openTask = TASK_INSIGHTS.find((task) => task.id === openTaskId) ?? null;\n const taskCount =\n tasks.length === 0\n ? \"All caught up\"\n : `${tasks.length} ${tasks.length === 1 ? \"needs\" : \"need\"} attention`;\n\n function dismissTask(id: string) {\n setDismissed((current) => [...current, id]);\n setOpenTaskId((current) => (current === id ? null : current));\n }\n\n return (\n <div className=\"layout-canvas layout-canvas--sticky-header\">\n <div className=\"layout-header\">\n <PageHeader\n title=\"Activity\"\n subtitle=\"What the team shipped, blocked, and commented on.\"\n breadcrumbs={breadcrumbs}\n />\n </div>\n <div className=\"layout-content\">\n <Section title=\"This week\">\n <Scoreboard aria-label=\"Activity this week\" items={ACTIVITY_METRICS} />\n </Section>\n <Section\n title=\"Tasks\"\n description={taskCount}\n actions={\n tasks.length > 0 ? (\n <ButtonGroup ariaLabel=\"Task layout\">\n <Button\n variant={taskView === \"cards\" ? \"secondary\" : \"tertiary\"}\n size=\"sm\"\n onClick={() => setTaskView(\"cards\")}\n >\n Cards\n </Button>\n <Button\n variant={taskView === \"list\" ? \"secondary\" : \"tertiary\"}\n size=\"sm\"\n onClick={() => setTaskView(\"list\")}\n >\n List\n </Button>\n </ButtonGroup>\n ) : undefined\n }\n >\n {tasks.length > 0 ? (\n taskView === \"cards\" ? (\n <TaskCards tasks={tasks} onOpen={setOpenTaskId} onDismiss={dismissTask} />\n ) : (\n <TaskList tasks={tasks} onOpen={setOpenTaskId} onDismiss={dismissTask} />\n )\n ) : (\n <Empty\n title=\"No open tasks\"\n description=\"Nothing in this sprint needs a look right now.\"\n icon=\"Check\"\n outlined\n />\n )}\n </Section>\n <Section title=\"Feed\" description=\"Newest first\">\n <Tabs\n ariaLabel=\"Activity type\"\n variant=\"line\"\n size=\"md\"\n defaultValue=\"all\"\n items={[\n { id: \"all\", label: \"All\", content: <ActivityFeed tab=\"all\" caption=\"All activity\" /> },\n { id: \"comments\", label: \"Comments\", content: <ActivityFeed tab=\"comments\" caption=\"Comments\" /> },\n { id: \"status\", label: \"Status\", content: <ActivityFeed tab=\"status\" caption=\"Status changes\" /> },\n { id: \"mentions\", label: \"Mentions\", content: <ActivityFeed tab=\"mentions\" caption=\"Mentions\" /> },\n ]}\n />\n </Section>\n </div>\n <TaskDrawer task={openTask} onClose={() => setOpenTaskId(null)} />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./TaskDrawer.
|
|
1
|
+
import "./TaskDrawer.kit.css";
|
|
2
2
|
//#region ui/patterns/ActivityPattern/TaskDrawer.module.css
|
|
3
3
|
var e = "_stack_1kdhd_1", t = "_row_1kdhd_6", n = "_meta_1kdhd_12", r = "_label_1kdhd_17", i = "_value_1kdhd_25", a = "_summary_1kdhd_33", o = {
|
|
4
4
|
stack: e,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./AssistantWorkspacePattern.
|
|
1
|
+
import "./AssistantWorkspacePattern.kit.css";
|
|
2
2
|
//#region ui/patterns/AssistantWorkspacePattern/AssistantWorkspacePattern.module.css
|
|
3
3
|
var e = "_shell_1jv27_1", t = "_insights_1jv27_7", n = "_rail_1jv27_12", r = {
|
|
4
4
|
shell: e,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardPattern.js","names":[],"sources":["../../../../ui/patterns/DashboardPattern/DashboardPattern.tsx"],"sourcesContent":["\"use client\";\n\nimport { DataTable } from \"../../DataTable\";\nimport type { DataTableColumn, DataTableRow } from \"../../DataTable\";\nimport { LineChart } from \"../../LineChart\";\nimport { PageHeader } from \"../../PageHeader\";\nimport type { PageHeaderProps } from \"../../PageHeader\";\nimport { Scoreboard } from \"../../Scoreboard\";\nimport { Section } from \"../../Section\";\nimport type { ChartDatum } from \"../../shared/chartMath\";\n\nconst SPRINT_METRICS = [\n { label: \"Weekly users\", value: \"1.44k\", delta: \"+6.2%\", trend: \"up\" as const, hint: \"vs last week\", size: \"lg\" as const, badge: \"Live\", badgeTone: \"success\" as const },\n { label: \"Open tasks\", value: \"4\", delta: \"+1\", trend: \"up\" as const, hint: \"this sprint\", size: \"lg\" as const, badge: \"Sprint\", badgeTone: \"info\" as const },\n { label: \"Blocked\", value: \"1\", delta: \"0\", trend: \"flat\" as const, hint: \"need owner\", size: \"lg\" as const, badge: \"At risk\", badgeTone: \"danger\" as const },\n { label: \"Ready\", value: \"1\", delta: \"+1\", trend: \"up\" as const, hint: \"to ship\", size: \"lg\" as const, badge: \"Ship\", badgeTone: \"brand\" as const },\n];\n\nconst WEEKLY_USERS: ChartDatum[] = [\n { label: \"Mon\", value: 1280 },\n { label: \"Tue\", value: 1410 },\n { label: \"Wed\", value: 1320 },\n { label: \"Thu\", value: 1480 },\n { label: \"Fri\", value: 1360 },\n { label: \"Sat\", value: 1440 },\n { label: \"Sun\", value: 1390 },\n];\n\nconst TASK_COLUMNS: DataTableColumn[] = [\n { key: \"task\", header: \"Task\", sortable: true },\n { key: \"owner\", header: \"Owner\", sortable: true },\n { key: \"status\", header: \"Status\", sortable: true },\n];\n\nconst TASK_ROWS: DataTableRow[] = [\n {\n id: \"launch-brief\",\n task: { type: \"file\", label: \"Launch brief\" },\n owner: { type: \"avatar\", label: \"Maya Chen\", name: \"Maya Chen\", src: \"/faces/maya-chen.jpg\" },\n status: { type: \"badge\", label: \"In review\", tone: \"warning\" },\n },\n {\n id: \"qa-checklist\",\n task: { type: \"file\", label: \"QA checklist\" },\n owner: { type: \"avatar\", label: \"Unassigned\", name: \"Unassigned\" },\n status: { type: \"badge\", label: \"Blocked\", tone: \"danger\" },\n },\n {\n id: \"release-notes\",\n task: { type: \"file\", label: \"Release notes\" },\n owner: { type: \"avatar\", label: \"Jordan Lee\", name: \"Jordan Lee\", src: \"/faces/jordan-lee.jpg\" },\n status: { type: \"badge\", label: \"Ready\", tone: \"success\" },\n },\n {\n id: \"support-macros\",\n task: { type: \"file\", label: \"Support macros\" },\n owner: { type: \"avatar\", label: \"Alex Rivera\", name: \"Alex Rivera\", src: \"/faces/alex-rivera.jpg\" },\n status: { type: \"badge\", label: \"In progress\", tone: \"info\" },\n },\n];\n\nexport function DashboardPattern({ breadcrumbs }: { breadcrumbs?: PageHeaderProps[\"breadcrumbs\"] }) {\n return (\n <div className=\"layout-canvas layout-canvas--sticky-header\">\n <div className=\"layout-header\">\n <PageHeader\n title=\"Overview\"\n subtitle=\"Workspace overview for the current team.\"\n breadcrumbs={breadcrumbs}\n />\n </div>\n <div className=\"layout-content\">\n <Section title=\"Sprint metrics\">\n <Scoreboard
|
|
1
|
+
{"version":3,"file":"DashboardPattern.js","names":[],"sources":["../../../../ui/patterns/DashboardPattern/DashboardPattern.tsx"],"sourcesContent":["\"use client\";\n\nimport { DataTable } from \"../../DataTable\";\nimport type { DataTableColumn, DataTableRow } from \"../../DataTable\";\nimport { LineChart } from \"../../LineChart\";\nimport { PageHeader } from \"../../PageHeader\";\nimport type { PageHeaderProps } from \"../../PageHeader\";\nimport { Scoreboard } from \"../../Scoreboard\";\nimport { Section } from \"../../Section\";\nimport type { ChartDatum } from \"../../shared/chartMath\";\n\nconst SPRINT_METRICS = [\n { label: \"Weekly users\", value: \"1.44k\", delta: \"+6.2%\", trend: \"up\" as const, hint: \"vs last week\", size: \"lg\" as const, badge: \"Live\", badgeTone: \"success\" as const },\n { label: \"Open tasks\", value: \"4\", delta: \"+1\", trend: \"up\" as const, hint: \"this sprint\", size: \"lg\" as const, badge: \"Sprint\", badgeTone: \"info\" as const },\n { label: \"Blocked\", value: \"1\", delta: \"0\", trend: \"flat\" as const, hint: \"need owner\", size: \"lg\" as const, badge: \"At risk\", badgeTone: \"danger\" as const },\n { label: \"Ready\", value: \"1\", delta: \"+1\", trend: \"up\" as const, hint: \"to ship\", size: \"lg\" as const, badge: \"Ship\", badgeTone: \"brand\" as const },\n];\n\nconst WEEKLY_USERS: ChartDatum[] = [\n { label: \"Mon\", value: 1280 },\n { label: \"Tue\", value: 1410 },\n { label: \"Wed\", value: 1320 },\n { label: \"Thu\", value: 1480 },\n { label: \"Fri\", value: 1360 },\n { label: \"Sat\", value: 1440 },\n { label: \"Sun\", value: 1390 },\n];\n\nconst TASK_COLUMNS: DataTableColumn[] = [\n { key: \"task\", header: \"Task\", sortable: true },\n { key: \"owner\", header: \"Owner\", sortable: true },\n { key: \"status\", header: \"Status\", sortable: true },\n];\n\nconst TASK_ROWS: DataTableRow[] = [\n {\n id: \"launch-brief\",\n task: { type: \"file\", label: \"Launch brief\" },\n owner: { type: \"avatar\", label: \"Maya Chen\", name: \"Maya Chen\", src: \"/faces/maya-chen.jpg\" },\n status: { type: \"badge\", label: \"In review\", tone: \"warning\" },\n },\n {\n id: \"qa-checklist\",\n task: { type: \"file\", label: \"QA checklist\" },\n owner: { type: \"avatar\", label: \"Unassigned\", name: \"Unassigned\" },\n status: { type: \"badge\", label: \"Blocked\", tone: \"danger\" },\n },\n {\n id: \"release-notes\",\n task: { type: \"file\", label: \"Release notes\" },\n owner: { type: \"avatar\", label: \"Jordan Lee\", name: \"Jordan Lee\", src: \"/faces/jordan-lee.jpg\" },\n status: { type: \"badge\", label: \"Ready\", tone: \"success\" },\n },\n {\n id: \"support-macros\",\n task: { type: \"file\", label: \"Support macros\" },\n owner: { type: \"avatar\", label: \"Alex Rivera\", name: \"Alex Rivera\", src: \"/faces/alex-rivera.jpg\" },\n status: { type: \"badge\", label: \"In progress\", tone: \"info\" },\n },\n];\n\nexport function DashboardPattern({ breadcrumbs }: { breadcrumbs?: PageHeaderProps[\"breadcrumbs\"] }) {\n return (\n <div className=\"layout-canvas layout-canvas--sticky-header\">\n <div className=\"layout-header\">\n <PageHeader\n title=\"Overview\"\n subtitle=\"Workspace overview for the current team.\"\n breadcrumbs={breadcrumbs}\n />\n </div>\n <div className=\"layout-content\">\n <Section title=\"Sprint metrics\">\n <Scoreboard aria-label=\"Sprint metrics\" items={SPRINT_METRICS} />\n </Section>\n <Section title=\"Weekly users\">\n <LineChart data={WEEKLY_USERS} variant=\"line\" showTable={false} />\n </Section>\n <Section title=\"Open tasks\" description=\"4 items need attention\">\n <DataTable\n caption=\"Sprint backlog\"\n selectable\n toolbar\n cellSize=\"sm\"\n searchPlaceholder=\"Search tasks...\"\n filters={[\n { key: \"status\", label: \"Status\" },\n { key: \"owner\", label: \"Owner\" },\n ]}\n columnSettings\n columns={TASK_COLUMNS}\n rows={TASK_ROWS}\n />\n </Section>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InboxPattern.js","names":[],"sources":["../../../../ui/patterns/InboxPattern/InboxPattern.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { Avatar } from \"../../Avatar\";\nimport { Badge } from \"../../Badge\";\nimport { Button } from \"../../Button\";\nimport { Cell } from \"../../Cell\";\nimport { Empty } from \"../../Empty\";\nimport { PageHeader } from \"../../PageHeader\";\nimport type { PageHeaderProps } from \"../../PageHeader\";\nimport { Scoreboard } from \"../../Scoreboard\";\nimport { Section } from \"../../Section\";\nimport { Table } from \"../../Table\";\nimport { Tabs } from \"../../Tabs\";\nimport { Toast } from \"../../Toast\";\nimport { filterMessages, INBOX, type InboxMessage } from \"./inbox-data\";\nimport { InboxReplyDrawer } from \"./InboxReplyDrawer\";\nimport styles from \"./InboxPattern.module.css\";\n\nconst COLUMNS = [\n { key: \"from\", header: \"From\", emphasis: true },\n { key: \"subject\", header: \"Subject\" },\n { key: \"kind\", header: \"Type\" },\n { key: \"when\", header: \"When\" },\n { key: \"open\", header: \"\" },\n];\n\nfunction InboxTable({\n messages,\n onOpen,\n}: {\n messages: InboxMessage[];\n onOpen: (id: string) => void;\n}) {\n return (\n <Table\n caption=\"Inbox\"\n size=\"sm\"\n emptyLabel=\"No messages in this filter.\"\n columns={COLUMNS}\n rows={messages.map((item) => ({\n from: <Cell type=\"avatar\" size=\"sm\" name={item.from} src={item.fromSrc} label={item.from} />,\n subject: item.subject,\n kind: <Badge tone={item.kindTone} size=\"sm\">{item.kind}</Badge>,\n when: item.when,\n open: (\n <Button variant=\"tertiary\" size=\"sm\" onClick={() => onOpen(item.id)}>\n Open\n </Button>\n ),\n }))}\n />\n );\n}\n\nexport interface InboxPatternProps {\n breadcrumbs?: PageHeaderProps[\"breadcrumbs\"];\n}\n\nexport function InboxPattern({ breadcrumbs }: InboxPatternProps) {\n const [messages, setMessages] = useState(INBOX);\n const [tab, setTab] = useState(\"all\");\n const [selectedId, setSelectedId] = useState<string | null>(INBOX[0]?.id ?? null);\n const [drawerOpen, setDrawerOpen] = useState(false);\n const [toastOpen, setToastOpen] = useState(false);\n\n const selected = messages.find((item) => item.id === selectedId) ?? null;\n const unread = messages.filter((item) => item.unread).length;\n\n useEffect(() => {\n const next = filterMessages(messages, tab);\n if (selectedId && next.some((item) => item.id === selectedId)) return;\n setSelectedId(next[0]?.id ?? null);\n setDrawerOpen(false);\n }, [selectedId, tab, messages]);\n\n function archive(id: string) {\n setMessages((current) => current.filter((item) => item.id !== id));\n setDrawerOpen(false);\n }\n\n function openMessage(id: string) {\n setSelectedId(id);\n setDrawerOpen(true);\n }\n\n function sendReply() {\n if (!selected) return;\n setMessages((current) =>\n current.map((item) => (item.id === selected.id ? { ...item, unread: false } : item)),\n );\n setToastOpen(true);\n }\n\n return (\n <div className=\"layout-canvas layout-canvas--sticky-header\">\n <div className=\"layout-header\">\n <PageHeader\n title=\"Inbox\"\n subtitle=\"Replies, mentions, and requests waiting on you.\"\n breadcrumbs={breadcrumbs}\n />\n </div>\n <div className=\"layout-content\">\n <Section title=\"At a glance\">\n <Scoreboard\n className=\"layout-metrics layout-metrics--fixed-4\"\n aria-label=\"Inbox this week\"\n items={[\n { label: \"Unread\", value: String(unread), delta: `+${unread}`, trend: \"up\" as const, hint: \"need a look\", size: \"lg\" as const, badge: \"Live\", badgeTone: \"danger\" as const },\n { label: \"Mentions\", value: String(messages.filter((item) => item.kind === \"Mention\").length), delta: \"+1\", trend: \"up\" as const, hint: \"this sprint\", size: \"lg\" as const, badge: \"You\", badgeTone: \"brand\" as const },\n { label: \"Requests\", value: String(messages.filter((item) => item.kind === \"Request\").length), delta: \"+2\", trend: \"up\" as const, hint: \"this sprint\", size: \"lg\" as const, badge: \"Review\", badgeTone: \"warning\" as const },\n { label: \"Open\", value: String(messages.length), delta: \"0\", trend: \"flat\" as const, hint: \"in inbox\", size: \"lg\" as const, badge: \"Sprint\", badgeTone: \"info\" as const },\n ]}\n />\n </Section>\n <Section title=\"Messages\" description={`${unread} unread`}>\n <Tabs\n ariaLabel=\"Inbox type\"\n variant=\"line\"\n size=\"md\"\n value={tab}\n onChange={setTab}\n items={[\n { id: \"all\", label: \"All\", content: <InboxTable messages={filterMessages(messages, \"all\")} onOpen={openMessage} /> },\n { id: \"unread\", label: \"Unread\", content: <InboxTable messages={filterMessages(messages, \"unread\")} onOpen={openMessage} /> },\n { id: \"mentions\", label: \"Mentions\", content: <InboxTable messages={filterMessages(messages, \"mentions\")} onOpen={openMessage} /> },\n { id: \"requests\", label: \"Requests\", content: <InboxTable messages={filterMessages(messages, \"requests\")} onOpen={openMessage} /> },\n ]}\n />\n </Section>\n <Section\n title={selected?.subject ?? \"Message\"}\n description={selected ? `${selected.from} · ${selected.when}` : \"Select a row\"}\n actions={\n selected ? (\n <>\n <Button variant=\"secondary\" size=\"sm\" onClick={() => archive(selected.id)}>\n Archive\n </Button>\n <Button\n variant={drawerOpen ? \"secondary\" : \"primary\"}\n size=\"sm\"\n onClick={() => openMessage(selected.id)}\n >\n Reply\n </Button>\n </>\n ) : undefined\n }\n >\n {selected ? (\n <div className={styles.detail}>\n <div className={styles.meta}>\n <Avatar name={selected.from} src={selected.fromSrc} size=\"md\" />\n <div className={styles.copy}>\n <p className={styles.label}>From</p>\n <p className={styles.value}>{selected.from}</p>\n </div>\n <Badge tone={selected.kindTone}>{selected.kind}</Badge>\n </div>\n <p className={styles.body}>{selected.body}</p>\n </div>\n ) : (\n <Empty\n title=\"No message selected\"\n description=\"Open a row to read it here.\"\n icon=\"Mail\"\n outlined\n />\n )}\n </Section>\n </div>\n <InboxReplyDrawer\n key={selected?.id ?? \"none\"}\n message={selected}\n open={drawerOpen}\n onClose={() => setDrawerOpen(false)}\n onSend={sendReply}\n />\n <Toast\n open={toastOpen}\n title=\"Reply sent\"\n description=\"It will show up in the thread.\"\n status=\"success\"\n duration={3000}\n onClose={() => setToastOpen(false)}\n onOpenChange={setToastOpen}\n />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"InboxPattern.js","names":[],"sources":["../../../../ui/patterns/InboxPattern/InboxPattern.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { Avatar } from \"../../Avatar\";\nimport { Badge } from \"../../Badge\";\nimport { Button } from \"../../Button\";\nimport { Cell } from \"../../Cell\";\nimport { Empty } from \"../../Empty\";\nimport { PageHeader } from \"../../PageHeader\";\nimport type { PageHeaderProps } from \"../../PageHeader\";\nimport { Scoreboard } from \"../../Scoreboard\";\nimport { Section } from \"../../Section\";\nimport { Table } from \"../../Table\";\nimport { Tabs } from \"../../Tabs\";\nimport { Toast } from \"../../Toast\";\nimport { filterMessages, INBOX, type InboxMessage } from \"./inbox-data\";\nimport { InboxReplyDrawer } from \"./InboxReplyDrawer\";\nimport styles from \"./InboxPattern.module.css\";\n\nconst COLUMNS = [\n { key: \"from\", header: \"From\", emphasis: true },\n { key: \"subject\", header: \"Subject\" },\n { key: \"kind\", header: \"Type\" },\n { key: \"when\", header: \"When\" },\n { key: \"open\", header: \"\" },\n];\n\nfunction InboxTable({\n messages,\n onOpen,\n}: {\n messages: InboxMessage[];\n onOpen: (id: string) => void;\n}) {\n return (\n <Table\n caption=\"Inbox\"\n size=\"sm\"\n emptyLabel=\"No messages in this filter.\"\n columns={COLUMNS}\n rows={messages.map((item) => ({\n from: <Cell type=\"avatar\" size=\"sm\" name={item.from} src={item.fromSrc} label={item.from} />,\n subject: item.subject,\n kind: <Badge tone={item.kindTone} size=\"sm\">{item.kind}</Badge>,\n when: item.when,\n open: (\n <Button variant=\"tertiary\" size=\"sm\" onClick={() => onOpen(item.id)}>\n Open\n </Button>\n ),\n }))}\n />\n );\n}\n\nexport interface InboxPatternProps {\n breadcrumbs?: PageHeaderProps[\"breadcrumbs\"];\n}\n\nexport function InboxPattern({ breadcrumbs }: InboxPatternProps) {\n const [messages, setMessages] = useState(INBOX);\n const [tab, setTab] = useState(\"all\");\n const [selectedId, setSelectedId] = useState<string | null>(INBOX[0]?.id ?? null);\n const [drawerOpen, setDrawerOpen] = useState(false);\n const [toastOpen, setToastOpen] = useState(false);\n\n const selected = messages.find((item) => item.id === selectedId) ?? null;\n const unread = messages.filter((item) => item.unread).length;\n\n useEffect(() => {\n const next = filterMessages(messages, tab);\n if (selectedId && next.some((item) => item.id === selectedId)) return;\n setSelectedId(next[0]?.id ?? null);\n setDrawerOpen(false);\n }, [selectedId, tab, messages]);\n\n function archive(id: string) {\n setMessages((current) => current.filter((item) => item.id !== id));\n setDrawerOpen(false);\n }\n\n function openMessage(id: string) {\n setSelectedId(id);\n setDrawerOpen(true);\n }\n\n function sendReply() {\n if (!selected) return;\n setMessages((current) =>\n current.map((item) => (item.id === selected.id ? { ...item, unread: false } : item)),\n );\n setToastOpen(true);\n }\n\n return (\n <div className=\"layout-canvas layout-canvas--sticky-header\">\n <div className=\"layout-header\">\n <PageHeader\n title=\"Inbox\"\n subtitle=\"Replies, mentions, and requests waiting on you.\"\n breadcrumbs={breadcrumbs}\n />\n </div>\n <div className=\"layout-content\">\n <Section title=\"At a glance\">\n <Scoreboard\n aria-label=\"Inbox this week\"\n items={[\n { label: \"Unread\", value: String(unread), delta: `+${unread}`, trend: \"up\" as const, hint: \"need a look\", size: \"lg\" as const, badge: \"Live\", badgeTone: \"danger\" as const },\n { label: \"Mentions\", value: String(messages.filter((item) => item.kind === \"Mention\").length), delta: \"+1\", trend: \"up\" as const, hint: \"this sprint\", size: \"lg\" as const, badge: \"You\", badgeTone: \"brand\" as const },\n { label: \"Requests\", value: String(messages.filter((item) => item.kind === \"Request\").length), delta: \"+2\", trend: \"up\" as const, hint: \"this sprint\", size: \"lg\" as const, badge: \"Review\", badgeTone: \"warning\" as const },\n { label: \"Open\", value: String(messages.length), delta: \"0\", trend: \"flat\" as const, hint: \"in inbox\", size: \"lg\" as const, badge: \"Sprint\", badgeTone: \"info\" as const },\n ]}\n />\n </Section>\n <Section title=\"Messages\" description={`${unread} unread`}>\n <Tabs\n ariaLabel=\"Inbox type\"\n variant=\"line\"\n size=\"md\"\n value={tab}\n onChange={setTab}\n items={[\n { id: \"all\", label: \"All\", content: <InboxTable messages={filterMessages(messages, \"all\")} onOpen={openMessage} /> },\n { id: \"unread\", label: \"Unread\", content: <InboxTable messages={filterMessages(messages, \"unread\")} onOpen={openMessage} /> },\n { id: \"mentions\", label: \"Mentions\", content: <InboxTable messages={filterMessages(messages, \"mentions\")} onOpen={openMessage} /> },\n { id: \"requests\", label: \"Requests\", content: <InboxTable messages={filterMessages(messages, \"requests\")} onOpen={openMessage} /> },\n ]}\n />\n </Section>\n <Section\n title={selected?.subject ?? \"Message\"}\n description={selected ? `${selected.from} · ${selected.when}` : \"Select a row\"}\n actions={\n selected ? (\n <>\n <Button variant=\"secondary\" size=\"sm\" onClick={() => archive(selected.id)}>\n Archive\n </Button>\n <Button\n variant={drawerOpen ? \"secondary\" : \"primary\"}\n size=\"sm\"\n onClick={() => openMessage(selected.id)}\n >\n Reply\n </Button>\n </>\n ) : undefined\n }\n >\n {selected ? (\n <div className={styles.detail}>\n <div className={styles.meta}>\n <Avatar name={selected.from} src={selected.fromSrc} size=\"md\" />\n <div className={styles.copy}>\n <p className={styles.label}>From</p>\n <p className={styles.value}>{selected.from}</p>\n </div>\n <Badge tone={selected.kindTone}>{selected.kind}</Badge>\n </div>\n <p className={styles.body}>{selected.body}</p>\n </div>\n ) : (\n <Empty\n title=\"No message selected\"\n description=\"Open a row to read it here.\"\n icon=\"Mail\"\n outlined\n />\n )}\n </Section>\n </div>\n <InboxReplyDrawer\n key={selected?.id ?? \"none\"}\n message={selected}\n open={drawerOpen}\n onClose={() => setDrawerOpen(false)}\n onSend={sendReply}\n />\n <Toast\n open={toastOpen}\n title=\"Reply sent\"\n description=\"It will show up in the thread.\"\n status=\"success\"\n duration={3000}\n onClose={() => setToastOpen(false)}\n onOpenChange={setToastOpen}\n />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./InboxPattern.
|
|
1
|
+
import "./InboxPattern.kit.css";
|
|
2
2
|
//#region ui/patterns/InboxPattern/InboxPattern.module.css
|
|
3
3
|
var e = "_detail_6vptx_1", t = "_meta_6vptx_6", n = "_copy_6vptx_13", r = "_label_6vptx_18", i = "_value_6vptx_26", a = "_body_6vptx_34", o = {
|
|
4
4
|
detail: e,
|
|
@@ -7,7 +7,7 @@ import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
|
7
7
|
function s({ title: s, description: c, legend: l, children: u, table: d, footnote: f, isEmpty: p = !1, emptyLabel: m = "No data for this range", isLoading: h = !1, className: g = "" }) {
|
|
8
8
|
let [_, v] = n("chart"), y = t(), b = t(), x = t(), S = _ === "table" && !!d;
|
|
9
9
|
return /* @__PURE__ */ o("figure", {
|
|
10
|
-
className: `${e.frame} ${g}`.trim(),
|
|
10
|
+
className: `${s || c || d || f || l ? e.frame : e.flush} ${g}`.trim(),
|
|
11
11
|
"aria-labelledby": s ? y : void 0,
|
|
12
12
|
"aria-describedby": c ? b : void 0,
|
|
13
13
|
children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartFrame.js","names":[],"sources":["../../../ui/shared/ChartFrame.tsx"],"sourcesContent":["\"use client\";\n\nimport { BarChart3, Table2 } from \"lucide-react\";\nimport { useId, useState, type ReactNode } from \"react\";\nimport styles from \"./ChartFrame.module.css\";\n\nexport interface ChartFrameProps {\n title?: string;\n description?: string;\n legend?: ReactNode;\n children: ReactNode;\n table?: ReactNode;\n footnote?: string;\n isEmpty?: boolean;\n emptyLabel?: string;\n isLoading?: boolean;\n className?: string;\n}\n\nexport function ChartFrame({\n title,\n description,\n legend,\n children,\n table,\n footnote,\n isEmpty = false,\n emptyLabel = \"No data for this range\",\n isLoading = false,\n className = \"\",\n}: ChartFrameProps) {\n const [view, setView] = useState<\"chart\" | \"table\">(\"chart\");\n const titleId = useId();\n const descriptionId = useId();\n const panelId = useId();\n const showTable = view === \"table\" && Boolean(table);\n\n return (\n <figure\n className={`${styles.frame} ${className}`.trim()}\n aria-labelledby={title ? titleId : undefined}\n aria-describedby={description ? descriptionId : undefined}\n >\n {title || table ? (\n <figcaption className={styles.header}>\n <div className={styles.heading}>\n {title ? (\n <h3 id={titleId} className={styles.title}>\n {title}\n </h3>\n ) : null}\n {description ? (\n <p id={descriptionId} className={styles.description}>\n {description}\n </p>\n ) : null}\n </div>\n {table ? (\n <div className={styles.actions}>\n <button\n type=\"button\"\n className={styles.toggle}\n onClick={() => setView(showTable ? \"chart\" : \"table\")}\n aria-expanded={showTable}\n aria-controls={panelId}\n >\n {showTable ? <BarChart3 aria-hidden=\"true\" size={14} /> : <Table2 aria-hidden=\"true\" size={14} />}\n <span>{showTable ? \"Chart\" : \"Table\"}</span>\n </button>\n </div>\n ) : null}\n </figcaption>\n ) : null}\n\n {legend}\n\n <div\n id={panelId}\n className={`${styles.body}${isLoading ? ` ${styles.loading}` : \"\"}`}\n >\n {isEmpty ? <p className={styles.empty}>{emptyLabel}</p> : showTable ? table : children}\n </div>\n\n {footnote ? <p className={styles.footnote}>{footnote}</p> : null}\n </figure>\n );\n}\n"],"mappings":";;;;;;AAmBA,SAAgB,EAAW,EACzB,UACA,gBACA,WACA,aACA,UACA,aACA,aAAU,IACV,gBAAa,0BACb,eAAY,IACZ,eAAY,MACM;CAClB,IAAM,CAAC,GAAM,KAAW,EAA4B,OAAO,GACrD,IAAU,EAAM,GAChB,IAAgB,EAAM,GACtB,IAAU,EAAM,GAChB,IAAY,MAAS,WAAW,EAAQ;
|
|
1
|
+
{"version":3,"file":"ChartFrame.js","names":[],"sources":["../../../ui/shared/ChartFrame.tsx"],"sourcesContent":["\"use client\";\n\nimport { BarChart3, Table2 } from \"lucide-react\";\nimport { useId, useState, type ReactNode } from \"react\";\nimport styles from \"./ChartFrame.module.css\";\n\nexport interface ChartFrameProps {\n title?: string;\n description?: string;\n legend?: ReactNode;\n children: ReactNode;\n table?: ReactNode;\n footnote?: string;\n isEmpty?: boolean;\n emptyLabel?: string;\n isLoading?: boolean;\n className?: string;\n}\n\nexport function ChartFrame({\n title,\n description,\n legend,\n children,\n table,\n footnote,\n isEmpty = false,\n emptyLabel = \"No data for this range\",\n isLoading = false,\n className = \"\",\n}: ChartFrameProps) {\n const [view, setView] = useState<\"chart\" | \"table\">(\"chart\");\n const titleId = useId();\n const descriptionId = useId();\n const panelId = useId();\n const showTable = view === \"table\" && Boolean(table);\n const hasChrome = Boolean(title || description || table || footnote || legend);\n\n return (\n <figure\n className={`${hasChrome ? styles.frame : styles.flush} ${className}`.trim()}\n aria-labelledby={title ? titleId : undefined}\n aria-describedby={description ? descriptionId : undefined}\n >\n {title || table ? (\n <figcaption className={styles.header}>\n <div className={styles.heading}>\n {title ? (\n <h3 id={titleId} className={styles.title}>\n {title}\n </h3>\n ) : null}\n {description ? (\n <p id={descriptionId} className={styles.description}>\n {description}\n </p>\n ) : null}\n </div>\n {table ? (\n <div className={styles.actions}>\n <button\n type=\"button\"\n className={styles.toggle}\n onClick={() => setView(showTable ? \"chart\" : \"table\")}\n aria-expanded={showTable}\n aria-controls={panelId}\n >\n {showTable ? <BarChart3 aria-hidden=\"true\" size={14} /> : <Table2 aria-hidden=\"true\" size={14} />}\n <span>{showTable ? \"Chart\" : \"Table\"}</span>\n </button>\n </div>\n ) : null}\n </figcaption>\n ) : null}\n\n {legend}\n\n <div\n id={panelId}\n className={`${styles.body}${isLoading ? ` ${styles.loading}` : \"\"}`}\n >\n {isEmpty ? <p className={styles.empty}>{emptyLabel}</p> : showTable ? table : children}\n </div>\n\n {footnote ? <p className={styles.footnote}>{footnote}</p> : null}\n </figure>\n );\n}\n"],"mappings":";;;;;;AAmBA,SAAgB,EAAW,EACzB,UACA,gBACA,WACA,aACA,UACA,aACA,aAAU,IACV,gBAAa,0BACb,eAAY,IACZ,eAAY,MACM;CAClB,IAAM,CAAC,GAAM,KAAW,EAA4B,OAAO,GACrD,IAAU,EAAM,GAChB,IAAgB,EAAM,GACtB,IAAU,EAAM,GAChB,IAAY,MAAS,WAAW,EAAQ;CAG9C,OACE,kBAAC,UAAD;EACE,WAAW,GAJW,KAAS,KAAe,KAAS,KAAY,IAIzC,EAAO,QAAQ,EAAO,MAAM,GAAG,IAAY,KAAK;EAC1E,mBAAiB,IAAQ,IAAU,KAAA;EACnC,oBAAkB,IAAc,IAAgB,KAAA;EAHlD,UAAA;GAKG,KAAS,IACR,kBAAC,cAAD;IAAY,WAAW,EAAO;IAA9B,UAAA,CACE,kBAAC,OAAD;KAAK,WAAW,EAAO;KAAvB,UAAA,CACG,IACC,kBAAC,MAAD;MAAI,IAAI;MAAS,WAAW,EAAO;MAChC,UAAA;KACC,CAAA,IACF,MACH,IACC,kBAAC,KAAD;MAAG,IAAI;MAAe,WAAW,EAAO;MACrC,UAAA;KACA,CAAA,IACD,IACD;IACJ,CAAA,GAAA,IACC,kBAAC,OAAD;KAAK,WAAW,EAAO;KACrB,UAAA,kBAAC,UAAD;MACE,MAAK;MACL,WAAW,EAAO;MAClB,eAAe,EAAQ,IAAY,UAAU,OAAO;MACpD,iBAAe;MACf,iBAAe;MALjB,UAAA,CAOe,EAAZ,IAAa,IAA6C,GAA9C;OAAW,eAAY;OAAO,MAAM;MAAK,CAA0C,GAChG,kBAAC,QAAD,EAAA,UAAO,IAAY,UAAU,QAAc,CAAA,CACrC;;IACL,CAAA,IACH,IACM;GACV,CAAA,IAAA;GAEH;GAED,kBAAC,OAAD;IACE,IAAI;IACJ,WAAW,GAAG,EAAO,OAAO,IAAY,IAAI,EAAO,YAAY;IAE9D,UAAA,IAAU,kBAAC,KAAD;KAAG,WAAW,EAAO;KAAQ,UAAA;IAAc,CAAA,IAAI,IAAY,IAAQ;GAC3E,CAAA;GAEJ,IAAW,kBAAC,KAAD;IAAG,WAAW,EAAO;IAAW,UAAA;GAAY,CAAA,IAAI;EACtD;;AAEZ"}
|