@tonyarbor/components 0.4.0 → 0.7.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 (118) hide show
  1. package/dist/Button.d.mts +1 -1
  2. package/dist/Button.d.ts +1 -1
  3. package/dist/Button.js +56 -0
  4. package/dist/Button.js.map +1 -1
  5. package/dist/Button.mjs +1 -1
  6. package/dist/ButtonSegmented.d.mts +61 -0
  7. package/dist/ButtonSegmented.d.ts +61 -0
  8. package/dist/ButtonSegmented.js +167 -0
  9. package/dist/ButtonSegmented.js.map +1 -0
  10. package/dist/ButtonSegmented.mjs +7 -0
  11. package/dist/ButtonSegmented.mjs.map +1 -0
  12. package/dist/ListRow.d.mts +72 -0
  13. package/dist/ListRow.d.ts +72 -0
  14. package/dist/ListRow.js +194 -0
  15. package/dist/ListRow.js.map +1 -0
  16. package/dist/ListRow.mjs +7 -0
  17. package/dist/ListRow.mjs.map +1 -0
  18. package/dist/ListRowMultiLine.d.mts +56 -0
  19. package/dist/ListRowMultiLine.d.ts +56 -0
  20. package/dist/ListRowMultiLine.js +182 -0
  21. package/dist/ListRowMultiLine.js.map +1 -0
  22. package/dist/ListRowMultiLine.mjs +7 -0
  23. package/dist/ListRowMultiLine.mjs.map +1 -0
  24. package/dist/Logo.d.mts +39 -0
  25. package/dist/Logo.d.ts +39 -0
  26. package/dist/Logo.js +119 -0
  27. package/dist/Logo.js.map +1 -0
  28. package/dist/Logo.mjs +7 -0
  29. package/dist/Logo.mjs.map +1 -0
  30. package/dist/Modal.d.mts +73 -0
  31. package/dist/Modal.d.ts +73 -0
  32. package/dist/Modal.js +114 -0
  33. package/dist/Modal.js.map +1 -0
  34. package/dist/Modal.mjs +9 -0
  35. package/dist/Modal.mjs.map +1 -0
  36. package/dist/ModalFooter.d.mts +40 -0
  37. package/dist/ModalFooter.d.ts +40 -0
  38. package/dist/ModalFooter.js +73 -0
  39. package/dist/ModalFooter.js.map +1 -0
  40. package/dist/ModalFooter.mjs +7 -0
  41. package/dist/ModalFooter.mjs.map +1 -0
  42. package/dist/ModalHeader.d.mts +65 -0
  43. package/dist/ModalHeader.d.ts +65 -0
  44. package/dist/ModalHeader.js +257 -0
  45. package/dist/ModalHeader.js.map +1 -0
  46. package/dist/ModalHeader.mjs +8 -0
  47. package/dist/ModalHeader.mjs.map +1 -0
  48. package/dist/Section.d.mts +57 -0
  49. package/dist/Section.d.ts +57 -0
  50. package/dist/Section.js +72 -0
  51. package/dist/Section.js.map +1 -0
  52. package/dist/Section.mjs +7 -0
  53. package/dist/Section.mjs.map +1 -0
  54. package/dist/SectionHeading.d.mts +111 -0
  55. package/dist/SectionHeading.d.ts +111 -0
  56. package/dist/SectionHeading.js +385 -0
  57. package/dist/SectionHeading.js.map +1 -0
  58. package/dist/SectionHeading.mjs +8 -0
  59. package/dist/SectionHeading.mjs.map +1 -0
  60. package/dist/SectionHeadingInteractive.d.mts +67 -0
  61. package/dist/SectionHeadingInteractive.d.ts +67 -0
  62. package/dist/SectionHeadingInteractive.js +225 -0
  63. package/dist/SectionHeadingInteractive.js.map +1 -0
  64. package/dist/SectionHeadingInteractive.mjs +7 -0
  65. package/dist/SectionHeadingInteractive.mjs.map +1 -0
  66. package/dist/SectionIcon.d.mts +35 -0
  67. package/dist/SectionIcon.d.ts +35 -0
  68. package/dist/SectionIcon.js +142 -0
  69. package/dist/SectionIcon.js.map +1 -0
  70. package/dist/SectionIcon.mjs +7 -0
  71. package/dist/SectionIcon.mjs.map +1 -0
  72. package/dist/SubSectionHeading.d.mts +75 -0
  73. package/dist/SubSectionHeading.d.ts +75 -0
  74. package/dist/SubSectionHeading.js +225 -0
  75. package/dist/SubSectionHeading.js.map +1 -0
  76. package/dist/SubSectionHeading.mjs +7 -0
  77. package/dist/SubSectionHeading.mjs.map +1 -0
  78. package/dist/SubSectionInteractive.d.mts +65 -0
  79. package/dist/SubSectionInteractive.d.ts +65 -0
  80. package/dist/SubSectionInteractive.js +211 -0
  81. package/dist/SubSectionInteractive.js.map +1 -0
  82. package/dist/SubSectionInteractive.mjs +7 -0
  83. package/dist/SubSectionInteractive.mjs.map +1 -0
  84. package/dist/chunk-7JWINM2N.mjs +77 -0
  85. package/dist/chunk-7JWINM2N.mjs.map +1 -0
  86. package/dist/chunk-7NYBJKJS.mjs +106 -0
  87. package/dist/chunk-7NYBJKJS.mjs.map +1 -0
  88. package/dist/chunk-ALLCJATI.mjs +189 -0
  89. package/dist/chunk-ALLCJATI.mjs.map +1 -0
  90. package/dist/chunk-F6JVEIWC.mjs +158 -0
  91. package/dist/chunk-F6JVEIWC.mjs.map +1 -0
  92. package/dist/chunk-GHATS25Y.mjs +249 -0
  93. package/dist/chunk-GHATS25Y.mjs.map +1 -0
  94. package/dist/chunk-GIQDPHZQ.mjs +121 -0
  95. package/dist/chunk-GIQDPHZQ.mjs.map +1 -0
  96. package/dist/chunk-ILLGBZ6R.mjs +131 -0
  97. package/dist/chunk-ILLGBZ6R.mjs.map +1 -0
  98. package/dist/chunk-NNYU4DPD.mjs +83 -0
  99. package/dist/chunk-NNYU4DPD.mjs.map +1 -0
  100. package/dist/{chunk-ALEJXAZY.mjs → chunk-NOUFR6W2.mjs} +57 -1
  101. package/dist/chunk-NOUFR6W2.mjs.map +1 -0
  102. package/dist/chunk-ODKT7LGV.mjs +146 -0
  103. package/dist/chunk-ODKT7LGV.mjs.map +1 -0
  104. package/dist/chunk-P7RKUESQ.mjs +37 -0
  105. package/dist/chunk-P7RKUESQ.mjs.map +1 -0
  106. package/dist/chunk-RL4G7MR3.mjs +189 -0
  107. package/dist/chunk-RL4G7MR3.mjs.map +1 -0
  108. package/dist/chunk-X2CW5GF3.mjs +175 -0
  109. package/dist/chunk-X2CW5GF3.mjs.map +1 -0
  110. package/dist/chunk-YJ36ZZJQ.mjs +36 -0
  111. package/dist/chunk-YJ36ZZJQ.mjs.map +1 -0
  112. package/dist/index.d.mts +14 -1
  113. package/dist/index.d.ts +14 -1
  114. package/dist/index.js +1722 -0
  115. package/dist/index.js.map +1 -1
  116. package/dist/index.mjs +55 -1
  117. package/package.json +66 -1
  118. package/dist/chunk-ALEJXAZY.mjs.map +0 -1
@@ -0,0 +1,111 @@
1
+ import * as React from 'react';
2
+ import { SectionIconVariant } from './SectionIcon.mjs';
3
+
4
+ interface SectionHeadingButton {
5
+ /**
6
+ * The label for the button
7
+ */
8
+ label: string;
9
+ /**
10
+ * Optional icon to display before the label
11
+ */
12
+ icon?: React.ReactNode;
13
+ /**
14
+ * Click handler for the button
15
+ */
16
+ onClick?: () => void;
17
+ }
18
+ interface SectionHeadingButtonGroupItem {
19
+ /**
20
+ * The label for the button
21
+ */
22
+ label: string;
23
+ /**
24
+ * Optional icon to display before the label
25
+ */
26
+ icon?: React.ReactNode;
27
+ /**
28
+ * Optional value identifier
29
+ */
30
+ value?: string;
31
+ }
32
+ interface SectionHeadingProps {
33
+ /**
34
+ * The heading title text
35
+ */
36
+ title: string;
37
+ /**
38
+ * Show an icon badge next to the title.
39
+ * Can be a boolean (defaults to 'info') or a specific variant.
40
+ * Available variants: 'warning', 'danger', 'info', 'success'
41
+ */
42
+ icon?: boolean | SectionIconVariant;
43
+ /**
44
+ * Avatar configuration - can be an image URL or initials
45
+ */
46
+ avatar?: {
47
+ src?: string;
48
+ initials?: string;
49
+ alt?: string;
50
+ };
51
+ /**
52
+ * Primary button configuration (mutually exclusive with buttonGroup)
53
+ */
54
+ button?: SectionHeadingButton;
55
+ /**
56
+ * Button group configuration (mutually exclusive with button)
57
+ */
58
+ buttonGroup?: {
59
+ items: SectionHeadingButtonGroupItem[];
60
+ activeIndex?: number;
61
+ onChange?: (index: number) => void;
62
+ };
63
+ /**
64
+ * Additional CSS class name
65
+ */
66
+ className?: string;
67
+ /**
68
+ * Additional inline styles
69
+ */
70
+ style?: React.CSSProperties;
71
+ }
72
+ /**
73
+ * SectionHeading component - Arbor Design System
74
+ *
75
+ * A flexible section heading component that can include an icon, avatar,
76
+ * button, or button group. Button and button group are mutually exclusive.
77
+ *
78
+ * @example
79
+ * ```tsx
80
+ * // Basic heading
81
+ * <SectionHeading title="Section Title" />
82
+ *
83
+ * // With icon
84
+ * <SectionHeading title="Section Title" icon />
85
+ *
86
+ * // With avatar
87
+ * <SectionHeading
88
+ * title="User Profile"
89
+ * avatar={{ src: "/avatar.jpg", alt: "User" }}
90
+ * />
91
+ *
92
+ * // With button
93
+ * <SectionHeading
94
+ * title="Section Title"
95
+ * button={{ label: "Add Item", onClick: () => {} }}
96
+ * />
97
+ *
98
+ * // With button group
99
+ * <SectionHeading
100
+ * title="Section Title"
101
+ * buttonGroup={{
102
+ * items: [{ label: "Day" }, { label: "Week" }],
103
+ * activeIndex: 0,
104
+ * onChange: (index) => {}
105
+ * }}
106
+ * />
107
+ * ```
108
+ */
109
+ declare const SectionHeading: React.ForwardRefExoticComponent<SectionHeadingProps & React.RefAttributes<HTMLDivElement>>;
110
+
111
+ export { SectionHeading, type SectionHeadingButton, type SectionHeadingButtonGroupItem, type SectionHeadingProps };
@@ -0,0 +1,111 @@
1
+ import * as React from 'react';
2
+ import { SectionIconVariant } from './SectionIcon.js';
3
+
4
+ interface SectionHeadingButton {
5
+ /**
6
+ * The label for the button
7
+ */
8
+ label: string;
9
+ /**
10
+ * Optional icon to display before the label
11
+ */
12
+ icon?: React.ReactNode;
13
+ /**
14
+ * Click handler for the button
15
+ */
16
+ onClick?: () => void;
17
+ }
18
+ interface SectionHeadingButtonGroupItem {
19
+ /**
20
+ * The label for the button
21
+ */
22
+ label: string;
23
+ /**
24
+ * Optional icon to display before the label
25
+ */
26
+ icon?: React.ReactNode;
27
+ /**
28
+ * Optional value identifier
29
+ */
30
+ value?: string;
31
+ }
32
+ interface SectionHeadingProps {
33
+ /**
34
+ * The heading title text
35
+ */
36
+ title: string;
37
+ /**
38
+ * Show an icon badge next to the title.
39
+ * Can be a boolean (defaults to 'info') or a specific variant.
40
+ * Available variants: 'warning', 'danger', 'info', 'success'
41
+ */
42
+ icon?: boolean | SectionIconVariant;
43
+ /**
44
+ * Avatar configuration - can be an image URL or initials
45
+ */
46
+ avatar?: {
47
+ src?: string;
48
+ initials?: string;
49
+ alt?: string;
50
+ };
51
+ /**
52
+ * Primary button configuration (mutually exclusive with buttonGroup)
53
+ */
54
+ button?: SectionHeadingButton;
55
+ /**
56
+ * Button group configuration (mutually exclusive with button)
57
+ */
58
+ buttonGroup?: {
59
+ items: SectionHeadingButtonGroupItem[];
60
+ activeIndex?: number;
61
+ onChange?: (index: number) => void;
62
+ };
63
+ /**
64
+ * Additional CSS class name
65
+ */
66
+ className?: string;
67
+ /**
68
+ * Additional inline styles
69
+ */
70
+ style?: React.CSSProperties;
71
+ }
72
+ /**
73
+ * SectionHeading component - Arbor Design System
74
+ *
75
+ * A flexible section heading component that can include an icon, avatar,
76
+ * button, or button group. Button and button group are mutually exclusive.
77
+ *
78
+ * @example
79
+ * ```tsx
80
+ * // Basic heading
81
+ * <SectionHeading title="Section Title" />
82
+ *
83
+ * // With icon
84
+ * <SectionHeading title="Section Title" icon />
85
+ *
86
+ * // With avatar
87
+ * <SectionHeading
88
+ * title="User Profile"
89
+ * avatar={{ src: "/avatar.jpg", alt: "User" }}
90
+ * />
91
+ *
92
+ * // With button
93
+ * <SectionHeading
94
+ * title="Section Title"
95
+ * button={{ label: "Add Item", onClick: () => {} }}
96
+ * />
97
+ *
98
+ * // With button group
99
+ * <SectionHeading
100
+ * title="Section Title"
101
+ * buttonGroup={{
102
+ * items: [{ label: "Day" }, { label: "Week" }],
103
+ * activeIndex: 0,
104
+ * onChange: (index) => {}
105
+ * }}
106
+ * />
107
+ * ```
108
+ */
109
+ declare const SectionHeading: React.ForwardRefExoticComponent<SectionHeadingProps & React.RefAttributes<HTMLDivElement>>;
110
+
111
+ export { SectionHeading, type SectionHeadingButton, type SectionHeadingButtonGroupItem, type SectionHeadingProps };
@@ -0,0 +1,385 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/SectionHeading/index.ts
31
+ var SectionHeading_exports = {};
32
+ __export(SectionHeading_exports, {
33
+ SectionHeading: () => SectionHeading
34
+ });
35
+ module.exports = __toCommonJS(SectionHeading_exports);
36
+
37
+ // src/SectionHeading/SectionHeading.tsx
38
+ var React2 = __toESM(require("react"));
39
+ var import_clsx2 = require("clsx");
40
+
41
+ // src/SectionIcon/SectionIcon.tsx
42
+ var React = __toESM(require("react"));
43
+ var import_clsx = require("clsx");
44
+ var import_jsx_runtime = require("react/jsx-runtime");
45
+ var WarningIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { width: "14", height: "12", viewBox: "0 0 14 12", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
46
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
47
+ "path",
48
+ {
49
+ d: "M7 0.5L13.5 11.5H0.5L7 0.5Z",
50
+ stroke: color,
51
+ strokeWidth: "1.2",
52
+ strokeLinejoin: "round",
53
+ fill: "none"
54
+ }
55
+ ),
56
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
57
+ "path",
58
+ {
59
+ d: "M7 4.5V7",
60
+ stroke: color,
61
+ strokeWidth: "1.2",
62
+ strokeLinecap: "round"
63
+ }
64
+ ),
65
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "7", cy: "9", r: "0.75", fill: color })
66
+ ] });
67
+ var InfoIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
68
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "7", cy: "7", r: "6", stroke: color, strokeWidth: "1.2", fill: "none" }),
69
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M7 6V10", stroke: color, strokeWidth: "1.2", strokeLinecap: "round" }),
70
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "7", cy: "4", r: "0.75", fill: color })
71
+ ] });
72
+ var SuccessIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
73
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "7", cy: "7", r: "6", stroke: color, strokeWidth: "1.2", fill: "none" }),
74
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M4 7L6 9L10 5", stroke: color, strokeWidth: "1.2", strokeLinecap: "round", strokeLinejoin: "round" })
75
+ ] });
76
+ var variantConfig = {
77
+ warning: {
78
+ backgroundColor: "#fffaf5",
79
+ iconColor: "#e4720d"
80
+ },
81
+ danger: {
82
+ backgroundColor: "#fff5f5",
83
+ iconColor: "#c93232"
84
+ },
85
+ info: {
86
+ backgroundColor: "#f5fbff",
87
+ iconColor: "#2c8bca"
88
+ },
89
+ success: {
90
+ backgroundColor: "#f5fff8",
91
+ iconColor: "#16a33d"
92
+ }
93
+ };
94
+ var sectionIconStyles = {
95
+ container: {
96
+ display: "inline-flex",
97
+ alignItems: "center",
98
+ justifyContent: "center",
99
+ padding: "4px",
100
+ borderRadius: "99px"
101
+ },
102
+ iconWrapper: {
103
+ display: "flex",
104
+ alignItems: "center",
105
+ justifyContent: "center",
106
+ width: "16px",
107
+ height: "16px"
108
+ }
109
+ };
110
+ var SectionIcon = React.forwardRef(
111
+ ({ variant = "info", className, style, ...props }, ref) => {
112
+ const config = variantConfig[variant];
113
+ const renderIcon = () => {
114
+ switch (variant) {
115
+ case "warning":
116
+ case "danger":
117
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(WarningIcon, { color: config.iconColor });
118
+ case "success":
119
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SuccessIcon, { color: config.iconColor });
120
+ case "info":
121
+ default:
122
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InfoIcon, { color: config.iconColor });
123
+ }
124
+ };
125
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
126
+ "div",
127
+ {
128
+ ref,
129
+ className: (0, import_clsx.clsx)("arbor-section-icon", className),
130
+ style: {
131
+ ...sectionIconStyles.container,
132
+ backgroundColor: config.backgroundColor,
133
+ ...style
134
+ },
135
+ ...props,
136
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: sectionIconStyles.iconWrapper, children: renderIcon() })
137
+ }
138
+ );
139
+ }
140
+ );
141
+ SectionIcon.displayName = "SectionIcon";
142
+
143
+ // src/SectionHeading/SectionHeading.tsx
144
+ var import_jsx_runtime2 = require("react/jsx-runtime");
145
+ var AvatarPlaceholder = () => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("svg", { width: "22", height: "33", viewBox: "0 0 22 33", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
146
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("circle", { cx: "11", cy: "7", r: "7", fill: "#d1d1d1" }),
147
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("ellipse", { cx: "11", cy: "33", rx: "11", ry: "11", fill: "#d1d1d1" })
148
+ ] });
149
+ var sectionHeadingStyles = {
150
+ container: {
151
+ display: "flex",
152
+ alignItems: "center",
153
+ gap: "12px",
154
+ padding: "8px",
155
+ borderBottom: "1px solid #f8f8f8",
156
+ fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
157
+ minHeight: "56px",
158
+ boxSizing: "border-box"
159
+ },
160
+ title: {
161
+ fontSize: "22px",
162
+ fontWeight: "600",
163
+ color: "#2f2f2f",
164
+ lineHeight: "1.25",
165
+ flex: 1,
166
+ overflow: "hidden",
167
+ textOverflow: "ellipsis",
168
+ whiteSpace: "nowrap",
169
+ margin: 0
170
+ },
171
+ titleWithIcon: {
172
+ display: "flex",
173
+ alignItems: "center",
174
+ gap: "8px",
175
+ flex: 1
176
+ },
177
+ iconBadge: {
178
+ display: "flex",
179
+ alignItems: "center",
180
+ flexShrink: 0
181
+ },
182
+ avatar: {
183
+ width: "48px",
184
+ height: "48px",
185
+ borderRadius: "8px",
186
+ border: "1px solid #efefef",
187
+ backgroundColor: "#f8f8f8",
188
+ flexShrink: 0,
189
+ overflow: "hidden",
190
+ display: "flex",
191
+ alignItems: "center",
192
+ justifyContent: "center"
193
+ },
194
+ avatarImage: {
195
+ width: "100%",
196
+ height: "100%",
197
+ objectFit: "cover"
198
+ },
199
+ avatarInitials: {
200
+ fontSize: "18px",
201
+ fontWeight: "600",
202
+ color: "#595959"
203
+ },
204
+ button: {
205
+ display: "inline-flex",
206
+ alignItems: "center",
207
+ justifyContent: "center",
208
+ gap: "8px",
209
+ height: "32px",
210
+ padding: "0 16px",
211
+ backgroundColor: "#0e8a0e",
212
+ color: "#ffffff",
213
+ border: "none",
214
+ borderRadius: "99px",
215
+ fontSize: "13px",
216
+ fontWeight: "600",
217
+ cursor: "pointer",
218
+ transition: "background-color 0.15s ease-in-out",
219
+ whiteSpace: "nowrap",
220
+ flexShrink: 0
221
+ },
222
+ buttonHover: {
223
+ backgroundColor: "#005700"
224
+ },
225
+ buttonGroup: {
226
+ container: {
227
+ display: "inline-flex",
228
+ alignItems: "center",
229
+ gap: "8px",
230
+ padding: "8px",
231
+ backgroundColor: "#ffffff",
232
+ border: "1px solid #efefef",
233
+ borderRadius: "99px",
234
+ flexShrink: 0
235
+ },
236
+ button: {
237
+ base: {
238
+ display: "inline-flex",
239
+ alignItems: "center",
240
+ justifyContent: "center",
241
+ gap: "8px",
242
+ padding: "8px 16px",
243
+ borderRadius: "99px",
244
+ border: "none",
245
+ cursor: "pointer",
246
+ fontSize: "13px",
247
+ fontWeight: "600",
248
+ lineHeight: "1.5",
249
+ transition: "all 0.15s ease-in-out",
250
+ outline: "none",
251
+ whiteSpace: "nowrap"
252
+ },
253
+ default: {
254
+ backgroundColor: "transparent",
255
+ color: "#595959"
256
+ },
257
+ hover: {
258
+ backgroundColor: "#f8f8f8",
259
+ color: "#2f2f2f"
260
+ },
261
+ active: {
262
+ backgroundColor: "#0e8a0e",
263
+ color: "#ffffff"
264
+ },
265
+ activeHover: {
266
+ backgroundColor: "#005700",
267
+ color: "#ffffff"
268
+ }
269
+ }
270
+ }
271
+ };
272
+ var SectionHeading = React2.forwardRef(
273
+ ({ title, icon, avatar, button, buttonGroup, className, style, ...props }, ref) => {
274
+ const [buttonHovered, setButtonHovered] = React2.useState(false);
275
+ const [hoveredGroupIndex, setHoveredGroupIndex] = React2.useState(null);
276
+ if (button && buttonGroup) {
277
+ console.warn("SectionHeading: button and buttonGroup are mutually exclusive. Only button will be rendered.");
278
+ }
279
+ const renderAvatar = () => {
280
+ if (!avatar) return null;
281
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: sectionHeadingStyles.avatar, children: avatar.src ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
282
+ "img",
283
+ {
284
+ src: avatar.src,
285
+ alt: avatar.alt || "Avatar",
286
+ style: sectionHeadingStyles.avatarImage
287
+ }
288
+ ) : avatar.initials ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { style: sectionHeadingStyles.avatarInitials, children: avatar.initials }) : /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(AvatarPlaceholder, {}) });
289
+ };
290
+ const renderTitle = () => {
291
+ if (icon) {
292
+ const iconVariant = typeof icon === "string" ? icon : "info";
293
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: sectionHeadingStyles.titleWithIcon, children: [
294
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("h2", { style: { ...sectionHeadingStyles.title, flex: "none" }, children: title }),
295
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: sectionHeadingStyles.iconBadge, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(SectionIcon, { variant: iconVariant }) })
296
+ ] });
297
+ }
298
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("h2", { style: sectionHeadingStyles.title, children: title });
299
+ };
300
+ const renderButton = () => {
301
+ if (!button) return null;
302
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
303
+ "button",
304
+ {
305
+ type: "button",
306
+ style: {
307
+ ...sectionHeadingStyles.button,
308
+ ...buttonHovered && sectionHeadingStyles.buttonHover
309
+ },
310
+ onClick: button.onClick,
311
+ onMouseEnter: () => setButtonHovered(true),
312
+ onMouseLeave: () => setButtonHovered(false),
313
+ children: [
314
+ button.icon && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { style: { display: "flex", alignItems: "center", width: "16px", height: "16px" }, children: button.icon }),
315
+ button.label
316
+ ]
317
+ }
318
+ );
319
+ };
320
+ const renderButtonGroup = () => {
321
+ if (!buttonGroup || button) return null;
322
+ const { items, activeIndex = 0, onChange } = buttonGroup;
323
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: sectionHeadingStyles.buttonGroup.container, children: items.slice(0, 4).map((item, index) => {
324
+ const isActive = index === activeIndex;
325
+ const isHovered = hoveredGroupIndex === index;
326
+ let btnStyle = {
327
+ ...sectionHeadingStyles.buttonGroup.button.base
328
+ };
329
+ if (isActive) {
330
+ btnStyle = {
331
+ ...btnStyle,
332
+ ...sectionHeadingStyles.buttonGroup.button.active,
333
+ ...isHovered && sectionHeadingStyles.buttonGroup.button.activeHover
334
+ };
335
+ } else {
336
+ btnStyle = {
337
+ ...btnStyle,
338
+ ...sectionHeadingStyles.buttonGroup.button.default,
339
+ ...isHovered && sectionHeadingStyles.buttonGroup.button.hover
340
+ };
341
+ }
342
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
343
+ "button",
344
+ {
345
+ type: "button",
346
+ style: btnStyle,
347
+ onClick: () => {
348
+ if (index !== activeIndex && onChange) {
349
+ onChange(index);
350
+ }
351
+ },
352
+ onMouseEnter: () => setHoveredGroupIndex(index),
353
+ onMouseLeave: () => setHoveredGroupIndex(null),
354
+ children: [
355
+ item.icon && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { style: { display: "flex", alignItems: "center", width: "16px", height: "16px" }, children: item.icon }),
356
+ item.label
357
+ ]
358
+ },
359
+ item.value || index
360
+ );
361
+ }) });
362
+ };
363
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
364
+ "div",
365
+ {
366
+ ref,
367
+ className: (0, import_clsx2.clsx)("arbor-section-heading", className),
368
+ style: { ...sectionHeadingStyles.container, ...style },
369
+ ...props,
370
+ children: [
371
+ renderAvatar(),
372
+ renderTitle(),
373
+ renderButton(),
374
+ renderButtonGroup()
375
+ ]
376
+ }
377
+ );
378
+ }
379
+ );
380
+ SectionHeading.displayName = "SectionHeading";
381
+ // Annotate the CommonJS export names for ESM import in node:
382
+ 0 && (module.exports = {
383
+ SectionHeading
384
+ });
385
+ //# sourceMappingURL=SectionHeading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/SectionHeading/index.ts","../src/SectionHeading/SectionHeading.tsx","../src/SectionIcon/SectionIcon.tsx"],"sourcesContent":["export { SectionHeading } from './SectionHeading';\nexport type {\n SectionHeadingProps,\n SectionHeadingButton,\n SectionHeadingButtonGroupItem,\n} from './SectionHeading';\n","import * as React from 'react';\nimport { clsx } from 'clsx';\nimport { SectionIcon, SectionIconVariant } from '../SectionIcon';\n\nexport interface SectionHeadingButton {\n /**\n * The label for the button\n */\n label: string;\n /**\n * Optional icon to display before the label\n */\n icon?: React.ReactNode;\n /**\n * Click handler for the button\n */\n onClick?: () => void;\n}\n\nexport interface SectionHeadingButtonGroupItem {\n /**\n * The label for the button\n */\n label: string;\n /**\n * Optional icon to display before the label\n */\n icon?: React.ReactNode;\n /**\n * Optional value identifier\n */\n value?: string;\n}\n\nexport interface SectionHeadingProps {\n /**\n * The heading title text\n */\n title: string;\n /**\n * Show an icon badge next to the title.\n * Can be a boolean (defaults to 'info') or a specific variant.\n * Available variants: 'warning', 'danger', 'info', 'success'\n */\n icon?: boolean | SectionIconVariant;\n /**\n * Avatar configuration - can be an image URL or initials\n */\n avatar?: {\n src?: string;\n initials?: string;\n alt?: string;\n };\n /**\n * Primary button configuration (mutually exclusive with buttonGroup)\n */\n button?: SectionHeadingButton;\n /**\n * Button group configuration (mutually exclusive with button)\n */\n buttonGroup?: {\n items: SectionHeadingButtonGroupItem[];\n activeIndex?: number;\n onChange?: (index: number) => void;\n };\n /**\n * Additional CSS class name\n */\n className?: string;\n /**\n * Additional inline styles\n */\n style?: React.CSSProperties;\n}\n\n// Placeholder icon for avatar\nconst AvatarPlaceholder = () => (\n <svg width=\"22\" height=\"33\" viewBox=\"0 0 22 33\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"11\" cy=\"7\" r=\"7\" fill=\"#d1d1d1\" />\n <ellipse cx=\"11\" cy=\"33\" rx=\"11\" ry=\"11\" fill=\"#d1d1d1\" />\n </svg>\n);\n\n// Arbor Design System section heading styles\nconst sectionHeadingStyles = {\n container: {\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n padding: '8px',\n borderBottom: '1px solid #f8f8f8',\n fontFamily: \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n minHeight: '56px',\n boxSizing: 'border-box' as const,\n },\n title: {\n fontSize: '22px',\n fontWeight: '600',\n color: '#2f2f2f',\n lineHeight: '1.25',\n flex: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap' as const,\n margin: 0,\n },\n titleWithIcon: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n flex: 1,\n },\n iconBadge: {\n display: 'flex',\n alignItems: 'center',\n flexShrink: 0,\n },\n avatar: {\n width: '48px',\n height: '48px',\n borderRadius: '8px',\n border: '1px solid #efefef',\n backgroundColor: '#f8f8f8',\n flexShrink: 0,\n overflow: 'hidden',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n avatarImage: {\n width: '100%',\n height: '100%',\n objectFit: 'cover' as const,\n },\n avatarInitials: {\n fontSize: '18px',\n fontWeight: '600',\n color: '#595959',\n },\n button: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '8px',\n height: '32px',\n padding: '0 16px',\n backgroundColor: '#0e8a0e',\n color: '#ffffff',\n border: 'none',\n borderRadius: '99px',\n fontSize: '13px',\n fontWeight: '600',\n cursor: 'pointer',\n transition: 'background-color 0.15s ease-in-out',\n whiteSpace: 'nowrap' as const,\n flexShrink: 0,\n },\n buttonHover: {\n backgroundColor: '#005700',\n },\n buttonGroup: {\n container: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n padding: '8px',\n backgroundColor: '#ffffff',\n border: '1px solid #efefef',\n borderRadius: '99px',\n flexShrink: 0,\n },\n button: {\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '8px',\n padding: '8px 16px',\n borderRadius: '99px',\n border: 'none',\n cursor: 'pointer',\n fontSize: '13px',\n fontWeight: '600',\n lineHeight: '1.5',\n transition: 'all 0.15s ease-in-out',\n outline: 'none',\n whiteSpace: 'nowrap' as const,\n },\n default: {\n backgroundColor: 'transparent',\n color: '#595959',\n },\n hover: {\n backgroundColor: '#f8f8f8',\n color: '#2f2f2f',\n },\n active: {\n backgroundColor: '#0e8a0e',\n color: '#ffffff',\n },\n activeHover: {\n backgroundColor: '#005700',\n color: '#ffffff',\n },\n },\n },\n};\n\n/**\n * SectionHeading component - Arbor Design System\n *\n * A flexible section heading component that can include an icon, avatar,\n * button, or button group. Button and button group are mutually exclusive.\n *\n * @example\n * ```tsx\n * // Basic heading\n * <SectionHeading title=\"Section Title\" />\n *\n * // With icon\n * <SectionHeading title=\"Section Title\" icon />\n *\n * // With avatar\n * <SectionHeading\n * title=\"User Profile\"\n * avatar={{ src: \"/avatar.jpg\", alt: \"User\" }}\n * />\n *\n * // With button\n * <SectionHeading\n * title=\"Section Title\"\n * button={{ label: \"Add Item\", onClick: () => {} }}\n * />\n *\n * // With button group\n * <SectionHeading\n * title=\"Section Title\"\n * buttonGroup={{\n * items: [{ label: \"Day\" }, { label: \"Week\" }],\n * activeIndex: 0,\n * onChange: (index) => {}\n * }}\n * />\n * ```\n */\nexport const SectionHeading = React.forwardRef<HTMLDivElement, SectionHeadingProps>(\n ({ title, icon, avatar, button, buttonGroup, className, style, ...props }, ref) => {\n const [buttonHovered, setButtonHovered] = React.useState(false);\n const [hoveredGroupIndex, setHoveredGroupIndex] = React.useState<number | null>(null);\n\n // Warn if both button and buttonGroup are provided\n if (button && buttonGroup) {\n console.warn('SectionHeading: button and buttonGroup are mutually exclusive. Only button will be rendered.');\n }\n\n const renderAvatar = () => {\n if (!avatar) return null;\n\n return (\n <div style={sectionHeadingStyles.avatar}>\n {avatar.src ? (\n <img\n src={avatar.src}\n alt={avatar.alt || 'Avatar'}\n style={sectionHeadingStyles.avatarImage}\n />\n ) : avatar.initials ? (\n <span style={sectionHeadingStyles.avatarInitials}>{avatar.initials}</span>\n ) : (\n <AvatarPlaceholder />\n )}\n </div>\n );\n };\n\n const renderTitle = () => {\n if (icon) {\n // Determine the icon variant - default to 'info' if boolean true\n const iconVariant: SectionIconVariant = typeof icon === 'string' ? icon : 'info';\n\n return (\n <div style={sectionHeadingStyles.titleWithIcon}>\n <h2 style={{ ...sectionHeadingStyles.title, flex: 'none' }}>{title}</h2>\n <div style={sectionHeadingStyles.iconBadge}>\n <SectionIcon variant={iconVariant} />\n </div>\n </div>\n );\n }\n\n return <h2 style={sectionHeadingStyles.title}>{title}</h2>;\n };\n\n const renderButton = () => {\n if (!button) return null;\n\n return (\n <button\n type=\"button\"\n style={{\n ...sectionHeadingStyles.button,\n ...(buttonHovered && sectionHeadingStyles.buttonHover),\n }}\n onClick={button.onClick}\n onMouseEnter={() => setButtonHovered(true)}\n onMouseLeave={() => setButtonHovered(false)}\n >\n {button.icon && (\n <span style={{ display: 'flex', alignItems: 'center', width: '16px', height: '16px' }}>\n {button.icon}\n </span>\n )}\n {button.label}\n </button>\n );\n };\n\n const renderButtonGroup = () => {\n if (!buttonGroup || button) return null;\n\n const { items, activeIndex = 0, onChange } = buttonGroup;\n\n return (\n <div style={sectionHeadingStyles.buttonGroup.container}>\n {items.slice(0, 4).map((item, index) => {\n const isActive = index === activeIndex;\n const isHovered = hoveredGroupIndex === index;\n\n let btnStyle: React.CSSProperties = {\n ...sectionHeadingStyles.buttonGroup.button.base,\n };\n\n if (isActive) {\n btnStyle = {\n ...btnStyle,\n ...sectionHeadingStyles.buttonGroup.button.active,\n ...(isHovered && sectionHeadingStyles.buttonGroup.button.activeHover),\n };\n } else {\n btnStyle = {\n ...btnStyle,\n ...sectionHeadingStyles.buttonGroup.button.default,\n ...(isHovered && sectionHeadingStyles.buttonGroup.button.hover),\n };\n }\n\n return (\n <button\n key={item.value || index}\n type=\"button\"\n style={btnStyle}\n onClick={() => {\n if (index !== activeIndex && onChange) {\n onChange(index);\n }\n }}\n onMouseEnter={() => setHoveredGroupIndex(index)}\n onMouseLeave={() => setHoveredGroupIndex(null)}\n >\n {item.icon && (\n <span style={{ display: 'flex', alignItems: 'center', width: '16px', height: '16px' }}>\n {item.icon}\n </span>\n )}\n {item.label}\n </button>\n );\n })}\n </div>\n );\n };\n\n return (\n <div\n ref={ref}\n className={clsx('arbor-section-heading', className)}\n style={{ ...sectionHeadingStyles.container, ...style }}\n {...props}\n >\n {renderAvatar()}\n {renderTitle()}\n {renderButton()}\n {renderButtonGroup()}\n </div>\n );\n }\n);\n\nSectionHeading.displayName = 'SectionHeading';\n","import * as React from 'react';\nimport { clsx } from 'clsx';\n\nexport type SectionIconVariant = 'warning' | 'danger' | 'info' | 'success';\n\nexport interface SectionIconProps {\n /**\n * The variant/style of the section icon\n * @default 'info'\n */\n variant?: SectionIconVariant;\n /**\n * Additional CSS class name\n */\n className?: string;\n /**\n * Additional inline styles\n */\n style?: React.CSSProperties;\n}\n\n// Warning triangle icon\nconst WarningIcon = ({ color }: { color: string }) => (\n <svg width=\"14\" height=\"12\" viewBox=\"0 0 14 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7 0.5L13.5 11.5H0.5L7 0.5Z\"\n stroke={color}\n strokeWidth=\"1.2\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n />\n <path\n d=\"M7 4.5V7\"\n stroke={color}\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n />\n <circle cx=\"7\" cy=\"9\" r=\"0.75\" fill={color} />\n </svg>\n);\n\n// Info circle icon\nconst InfoIcon = ({ color }: { color: string }) => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"7\" cy=\"7\" r=\"6\" stroke={color} strokeWidth=\"1.2\" fill=\"none\" />\n <path d=\"M7 6V10\" stroke={color} strokeWidth=\"1.2\" strokeLinecap=\"round\" />\n <circle cx=\"7\" cy=\"4\" r=\"0.75\" fill={color} />\n </svg>\n);\n\n// Success checkmark icon\nconst SuccessIcon = ({ color }: { color: string }) => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"7\" cy=\"7\" r=\"6\" stroke={color} strokeWidth=\"1.2\" fill=\"none\" />\n <path d=\"M4 7L6 9L10 5\" stroke={color} strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\n// Variant configurations\nconst variantConfig: Record<SectionIconVariant, { backgroundColor: string; iconColor: string }> = {\n warning: {\n backgroundColor: '#fffaf5',\n iconColor: '#e4720d',\n },\n danger: {\n backgroundColor: '#fff5f5',\n iconColor: '#c93232',\n },\n info: {\n backgroundColor: '#f5fbff',\n iconColor: '#2c8bca',\n },\n success: {\n backgroundColor: '#f5fff8',\n iconColor: '#16a33d',\n },\n};\n\n// Arbor Design System section icon styles\nconst sectionIconStyles = {\n container: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '4px',\n borderRadius: '99px',\n },\n iconWrapper: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '16px',\n height: '16px',\n },\n};\n\n/**\n * SectionIcon component - Arbor Design System\n *\n * A small badge-like icon used in section headings to indicate status or alerts.\n * Available in 4 variants: warning (orange), danger (red), info (blue), success (green).\n *\n * @example\n * ```tsx\n * <SectionIcon variant=\"warning\" />\n * <SectionIcon variant=\"danger\" />\n * <SectionIcon variant=\"info\" />\n * <SectionIcon variant=\"success\" />\n * ```\n */\nexport const SectionIcon = React.forwardRef<HTMLDivElement, SectionIconProps>(\n ({ variant = 'info', className, style, ...props }, ref) => {\n const config = variantConfig[variant];\n\n const renderIcon = () => {\n switch (variant) {\n case 'warning':\n case 'danger':\n return <WarningIcon color={config.iconColor} />;\n case 'success':\n return <SuccessIcon color={config.iconColor} />;\n case 'info':\n default:\n return <InfoIcon color={config.iconColor} />;\n }\n };\n\n return (\n <div\n ref={ref}\n className={clsx('arbor-section-icon', className)}\n style={{\n ...sectionIconStyles.container,\n backgroundColor: config.backgroundColor,\n ...style,\n }}\n {...props}\n >\n <div style={sectionIconStyles.iconWrapper}>\n {renderIcon()}\n </div>\n </div>\n );\n }\n);\n\nSectionIcon.displayName = 'SectionIcon';\n"],"mappings":"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","names":["React","import_clsx","import_jsx_runtime"]}
@@ -0,0 +1,8 @@
1
+ import {
2
+ SectionHeading
3
+ } from "./chunk-GHATS25Y.mjs";
4
+ import "./chunk-7NYBJKJS.mjs";
5
+ export {
6
+ SectionHeading
7
+ };
8
+ //# sourceMappingURL=SectionHeading.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}