mac-human-design 0.1.3 → 0.1.5

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.
@@ -0,0 +1,104 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+
5
+ const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
6
+ const stylesPath = path.join(repoRoot, "src", "styles", "macosBaseUi.css");
7
+
8
+ function readText(filePath) {
9
+ return fs.readFileSync(filePath, "utf8");
10
+ }
11
+
12
+ function listFiles(directory, relativePrefix = "") {
13
+ const files = [];
14
+ for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {
15
+ const relativePath = path.join(relativePrefix, entry.name);
16
+ const absolutePath = path.join(directory, entry.name);
17
+ if (entry.isDirectory()) {
18
+ files.push(...listFiles(absolutePath, relativePath));
19
+ } else if (entry.isFile()) {
20
+ files.push(relativePath);
21
+ }
22
+ }
23
+ return files;
24
+ }
25
+
26
+ function fail(message, details = []) {
27
+ console.error(message);
28
+ for (const detail of details) {
29
+ console.error(`- ${detail}`);
30
+ }
31
+ process.exitCode = 1;
32
+ }
33
+
34
+ const sourceFiles = listFiles(path.join(repoRoot, "src"))
35
+ .filter((filePath) => /\.(css|ts|tsx)$/.test(filePath))
36
+ .map((filePath) => path.join("src", filePath));
37
+
38
+ const sources = new Map(
39
+ sourceFiles.map((relativeFile) => [relativeFile, readText(path.join(repoRoot, relativeFile))]),
40
+ );
41
+ const stylesSource = readText(stylesPath);
42
+
43
+ const requiredStyleFeatures = [
44
+ ["system font stack", /-apple-system,\s*BlinkMacSystemFont/],
45
+ ["dark color-scheme support", /@media\s*\(prefers-color-scheme:\s*dark\)/],
46
+ ["reduced motion support", /@media\s*\(prefers-reduced-motion:\s*reduce\)/],
47
+ ["keyboard focus-visible support", /:focus-visible/],
48
+ ["macOS blue accent token", /--hd-mac-blue:\s*#0a84ff/i],
49
+ ];
50
+
51
+ const missingFeatures = requiredStyleFeatures
52
+ .filter(([, pattern]) => !pattern.test(stylesSource))
53
+ .map(([label]) => label);
54
+
55
+ if (missingFeatures.length > 0) {
56
+ fail("Missing required macOS styling features.", missingFeatures);
57
+ }
58
+
59
+ const negativeLetterSpacing = [];
60
+ const viewportScaledFonts = [];
61
+
62
+ for (const [relativeFile, source] of sources) {
63
+ for (const match of source.matchAll(/letter-spacing\s*:\s*-[^;,\n}]*/g)) {
64
+ negativeLetterSpacing.push(`${relativeFile}: ${match[0]}`);
65
+ }
66
+
67
+ for (const match of source.matchAll(/font(?:-size)?\s*:\s*[^;,\n}]*(?:vw|vh|vmin|vmax)/g)) {
68
+ viewportScaledFonts.push(`${relativeFile}: ${match[0]}`);
69
+ }
70
+ }
71
+
72
+ if (negativeLetterSpacing.length > 0) {
73
+ fail("Negative letter spacing is not allowed in human-design controls.", negativeLetterSpacing);
74
+ }
75
+
76
+ if (viewportScaledFonts.length > 0) {
77
+ fail("Viewport-scaled font sizing is not allowed in human-design controls.", viewportScaledFonts);
78
+ }
79
+
80
+ const allSourceText = Array.from(sources.values()).join("\n");
81
+ const hdMacClasses = new Set(
82
+ Array.from(allSourceText.matchAll(/["'`]([^"'`]*hd-mac[^"'`]*)["'`]/g))
83
+ .flatMap((match) => match[1].split(/\s+/))
84
+ .filter((className) => className.startsWith("hd-mac")),
85
+ );
86
+
87
+ const missingClassStyles = Array.from(hdMacClasses)
88
+ .sort()
89
+ .filter((className) => {
90
+ const escapedClassName = className.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
91
+ return !new RegExp(`\\.${escapedClassName}(?![a-zA-Z0-9_-])`).test(stylesSource);
92
+ });
93
+
94
+ if (missingClassStyles.length > 0) {
95
+ fail("Missing CSS selectors for hd-mac classes used in source files.", missingClassStyles);
96
+ }
97
+
98
+ if (process.exitCode) {
99
+ process.exit();
100
+ }
101
+
102
+ console.log(
103
+ `Verified macOS design features, typography constraints, and ${hdMacClasses.size} styled hd-mac classes.`,
104
+ );
@@ -1,25 +1,11 @@
1
1
  import { ReactNode } from "react";
2
- import { Block } from "baseui/block";
3
- import { useStyletron } from "baseui";
4
2
 
5
3
  export function AppWindowShell({ children }: { children: ReactNode }) {
6
- const [, theme] = useStyletron();
7
-
8
4
  return (
9
- <Block
10
- width="100%"
11
- $style={{
12
- minHeight: "100vh",
13
- boxSizing: "border-box",
14
- display: "flex",
15
- flexDirection: "column",
16
- backgroundColor: theme.colors.backgroundPrimary,
17
- color: theme.colors.contentPrimary,
18
- }}
19
- >
20
- <Block flex="1" $style={{ minHeight: 0, display: "flex", flexDirection: "column" }}>
5
+ <div className="hd-mac-window">
6
+ <div className="hd-mac-window-content">
21
7
  {children}
22
- </Block>
23
- </Block>
8
+ </div>
9
+ </div>
24
10
  );
25
11
  }
@@ -0,0 +1,481 @@
1
+ import * as React from "react";
2
+ import { Accordion as BaseAccordion } from "@base-ui/react/accordion";
3
+ import { AlertDialog as BaseAlertDialog } from "@base-ui/react/alert-dialog";
4
+ import { Autocomplete as BaseAutocomplete } from "@base-ui/react/autocomplete";
5
+ import { Avatar as BaseAvatar } from "@base-ui/react/avatar";
6
+ import { Button as BaseButton } from "@base-ui/react/button";
7
+ import { Checkbox as BaseCheckbox } from "@base-ui/react/checkbox";
8
+ import { CheckboxGroup as BaseCheckboxGroup } from "@base-ui/react/checkbox-group";
9
+ import { Collapsible as BaseCollapsible } from "@base-ui/react/collapsible";
10
+ import { Combobox as BaseCombobox } from "@base-ui/react/combobox";
11
+ import { ContextMenu as BaseContextMenu } from "@base-ui/react/context-menu";
12
+ import { CSPProvider as BaseCSPProvider } from "@base-ui/react/csp-provider";
13
+ import { Dialog as BaseDialog } from "@base-ui/react/dialog";
14
+ import { DirectionProvider as BaseDirectionProvider } from "@base-ui/react/direction-provider";
15
+ import { Drawer as BaseDrawer } from "@base-ui/react/drawer";
16
+ import { Field as BaseField } from "@base-ui/react/field";
17
+ import { Fieldset as BaseFieldset } from "@base-ui/react/fieldset";
18
+ import { Form as BaseForm } from "@base-ui/react/form";
19
+ import { Input as BaseInput } from "@base-ui/react/input";
20
+ import { Menu as BaseMenu } from "@base-ui/react/menu";
21
+ import { Menubar as BaseMenubar } from "@base-ui/react/menubar";
22
+ import { Meter as BaseMeter } from "@base-ui/react/meter";
23
+ import { NavigationMenu as BaseNavigationMenu } from "@base-ui/react/navigation-menu";
24
+ import { NumberField as BaseNumberField } from "@base-ui/react/number-field";
25
+ import { OTPFieldPreview as BaseOTPField } from "@base-ui/react/otp-field";
26
+ import { Popover as BasePopover } from "@base-ui/react/popover";
27
+ import { PreviewCard as BasePreviewCard } from "@base-ui/react/preview-card";
28
+ import { Progress as BaseProgress } from "@base-ui/react/progress";
29
+ import { Radio as BaseRadio } from "@base-ui/react/radio";
30
+ import { RadioGroup as BaseRadioGroup } from "@base-ui/react/radio-group";
31
+ import { ScrollArea as BaseScrollArea } from "@base-ui/react/scroll-area";
32
+ import { Select as BaseSelect } from "@base-ui/react/select";
33
+ import { Separator as BaseSeparator } from "@base-ui/react/separator";
34
+ import { Slider as BaseSlider } from "@base-ui/react/slider";
35
+ import { Switch as BaseSwitch } from "@base-ui/react/switch";
36
+ import { Tabs as BaseTabs } from "@base-ui/react/tabs";
37
+ import { Toast as BaseToast } from "@base-ui/react/toast";
38
+ import { Toggle as BaseToggle } from "@base-ui/react/toggle";
39
+ import { ToggleGroup as BaseToggleGroup } from "@base-ui/react/toggle-group";
40
+ import { Toolbar as BaseToolbar } from "@base-ui/react/toolbar";
41
+ import { Tooltip as BaseTooltip } from "@base-ui/react/tooltip";
42
+
43
+ type AnyComponent = React.ComponentType<any>;
44
+ type ClassNameProp = string | ((state: any) => string | undefined) | undefined;
45
+
46
+ function joinClasses(...classes: Array<string | undefined | false>) {
47
+ return classes.filter(Boolean).join(" ");
48
+ }
49
+
50
+ function mergeClassName(macClassName: string, className: ClassNameProp): ClassNameProp {
51
+ if (typeof className === "function") {
52
+ return (state: any) => joinClasses(macClassName, className(state));
53
+ }
54
+ return joinClasses(macClassName, className);
55
+ }
56
+
57
+ function macPart<C extends AnyComponent>(Component: C, macClassName: string) {
58
+ const Wrapped = React.forwardRef<unknown, React.ComponentPropsWithoutRef<C>>((props, ref) => {
59
+ const TypedComponent = Component as AnyComponent;
60
+ const { className, ...rest } = props as Record<string, unknown>;
61
+ return React.createElement(TypedComponent, {
62
+ ...rest,
63
+ ref,
64
+ className: mergeClassName(macClassName, className as ClassNameProp),
65
+ });
66
+ });
67
+
68
+ Wrapped.displayName = `Mac${Component.displayName ?? Component.name ?? "BaseUIPart"}`;
69
+ return Wrapped as unknown as C;
70
+ }
71
+
72
+ function macProvider<C extends AnyComponent>(Component: C) {
73
+ const Wrapped = React.forwardRef<unknown, React.ComponentPropsWithoutRef<C>>((props, ref) => {
74
+ const TypedComponent = Component as AnyComponent;
75
+ return React.createElement(TypedComponent, {
76
+ ...(props as Record<string, unknown>),
77
+ ref,
78
+ });
79
+ });
80
+ Wrapped.displayName = `Mac${Component.displayName ?? Component.name ?? "BaseUIProvider"}`;
81
+ return Wrapped as unknown as C;
82
+ }
83
+
84
+ export const MacAccordion = {
85
+ Root: macPart(BaseAccordion.Root, "hd-mac hd-mac-stack hd-mac-accordion"),
86
+ Item: macPart(BaseAccordion.Item, "hd-mac-accordion-item"),
87
+ Header: macPart(BaseAccordion.Header, "hd-mac-accordion-header"),
88
+ Trigger: macPart(BaseAccordion.Trigger, "hd-mac-button hd-mac-accordion-trigger"),
89
+ Panel: macPart(BaseAccordion.Panel, "hd-mac-accordion-panel"),
90
+ };
91
+
92
+ export const MacAlertDialog = {
93
+ Root: macProvider(BaseAlertDialog.Root),
94
+ Backdrop: macPart(BaseAlertDialog.Backdrop, "hd-mac-backdrop"),
95
+ Close: macPart(BaseAlertDialog.Close, "hd-mac-button hd-mac-button-plain"),
96
+ Description: macPart(BaseAlertDialog.Description, "hd-mac-dialog-description"),
97
+ Popup: macPart(BaseAlertDialog.Popup, "hd-mac hd-mac-dialog hd-mac-alert-dialog"),
98
+ Portal: macProvider(BaseAlertDialog.Portal),
99
+ Title: macPart(BaseAlertDialog.Title, "hd-mac-dialog-title"),
100
+ Trigger: macPart(BaseAlertDialog.Trigger, "hd-mac-button"),
101
+ Viewport: macPart(BaseAlertDialog.Viewport, "hd-mac-viewport"),
102
+ };
103
+
104
+ export const MacAutocomplete = {
105
+ Root: macPart(BaseAutocomplete.Root, "hd-mac hd-mac-field"),
106
+ Value: macPart(BaseAutocomplete.Value, "hd-mac-control-value"),
107
+ Trigger: macPart(BaseAutocomplete.Trigger, "hd-mac-button hd-mac-disclosure-trigger"),
108
+ Input: macPart(BaseAutocomplete.Input, "hd-mac-input"),
109
+ InputGroup: macPart(BaseAutocomplete.InputGroup, "hd-mac-input-group"),
110
+ Icon: macPart(BaseAutocomplete.Icon, "hd-mac-control-icon"),
111
+ Clear: macPart(BaseAutocomplete.Clear, "hd-mac-button hd-mac-button-plain hd-mac-clear-button"),
112
+ List: macPart(BaseAutocomplete.List, "hd-mac-listbox"),
113
+ Status: macPart(BaseAutocomplete.Status, "hd-mac-status-text"),
114
+ Portal: macProvider(BaseAutocomplete.Portal),
115
+ Backdrop: macPart(BaseAutocomplete.Backdrop, "hd-mac-backdrop"),
116
+ Positioner: macPart(BaseAutocomplete.Positioner, "hd-mac-positioner"),
117
+ Popup: macPart(BaseAutocomplete.Popup, "hd-mac hd-mac-popup"),
118
+ Arrow: macPart(BaseAutocomplete.Arrow, "hd-mac-popup-arrow"),
119
+ Group: macPart(BaseAutocomplete.Group, "hd-mac-menu-group"),
120
+ GroupLabel: macPart(BaseAutocomplete.GroupLabel, "hd-mac-menu-group-label"),
121
+ Item: macPart(BaseAutocomplete.Item, "hd-mac-menu-item"),
122
+ Row: macPart(BaseAutocomplete.Row, "hd-mac-menu-row"),
123
+ Collection: macPart(BaseAutocomplete.Collection, "hd-mac-menu-collection"),
124
+ Empty: macPart(BaseAutocomplete.Empty, "hd-mac-empty-state"),
125
+ Separator: macPart(BaseAutocomplete.Separator, "hd-mac-separator"),
126
+ };
127
+
128
+ export const MacAvatar = {
129
+ Root: macPart(BaseAvatar.Root, "hd-mac-avatar"),
130
+ Image: macPart(BaseAvatar.Image, "hd-mac-avatar-image"),
131
+ Fallback: macPart(BaseAvatar.Fallback, "hd-mac-avatar-fallback"),
132
+ };
133
+
134
+ export const MacButton = macPart(BaseButton, "hd-mac-button");
135
+ export const MacPrimaryButton = macPart(BaseButton, "hd-mac-button hd-mac-button-primary");
136
+ export const MacSecondaryButton = macPart(BaseButton, "hd-mac-button hd-mac-button-secondary");
137
+ export const MacDestructiveButton = macPart(BaseButton, "hd-mac-button hd-mac-button-destructive");
138
+ export const MacPlainButton = macPart(BaseButton, "hd-mac-button hd-mac-button-plain");
139
+ export const MacIconButton = macPart(BaseButton, "hd-mac-button hd-mac-icon-button");
140
+ export const MacHelpButton = macPart(BaseButton, "hd-mac-button hd-mac-help-button");
141
+
142
+ export const MacCheckbox = {
143
+ Root: macPart(BaseCheckbox.Root, "hd-mac-checkbox"),
144
+ Indicator: macPart(BaseCheckbox.Indicator, "hd-mac-checkbox-indicator"),
145
+ };
146
+
147
+ export const MacCheckboxGroup = macPart(BaseCheckboxGroup, "hd-mac hd-mac-choice-group");
148
+
149
+ export const MacCollapsible = {
150
+ Root: macPart(BaseCollapsible.Root, "hd-mac-collapsible"),
151
+ Trigger: macPart(BaseCollapsible.Trigger, "hd-mac-button hd-mac-disclosure-trigger"),
152
+ Panel: macPart(BaseCollapsible.Panel, "hd-mac-collapsible-panel"),
153
+ };
154
+
155
+ export const MacCombobox = {
156
+ Root: macPart(BaseCombobox.Root, "hd-mac hd-mac-field"),
157
+ Label: macPart(BaseCombobox.Label, "hd-mac-label"),
158
+ Value: macPart(BaseCombobox.Value, "hd-mac-control-value"),
159
+ Input: macPart(BaseCombobox.Input, "hd-mac-input"),
160
+ InputGroup: macPart(BaseCombobox.InputGroup, "hd-mac-input-group"),
161
+ Trigger: macPart(BaseCombobox.Trigger, "hd-mac-button hd-mac-disclosure-trigger"),
162
+ List: macPart(BaseCombobox.List, "hd-mac-listbox"),
163
+ Status: macPart(BaseCombobox.Status, "hd-mac-status-text"),
164
+ Portal: macProvider(BaseCombobox.Portal),
165
+ Backdrop: macPart(BaseCombobox.Backdrop, "hd-mac-backdrop"),
166
+ Positioner: macPart(BaseCombobox.Positioner, "hd-mac-positioner"),
167
+ Popup: macPart(BaseCombobox.Popup, "hd-mac hd-mac-popup"),
168
+ Arrow: macPart(BaseCombobox.Arrow, "hd-mac-popup-arrow"),
169
+ Icon: macPart(BaseCombobox.Icon, "hd-mac-control-icon"),
170
+ Group: macPart(BaseCombobox.Group, "hd-mac-menu-group"),
171
+ GroupLabel: macPart(BaseCombobox.GroupLabel, "hd-mac-menu-group-label"),
172
+ Item: macPart(BaseCombobox.Item, "hd-mac-menu-item"),
173
+ ItemIndicator: macPart(BaseCombobox.ItemIndicator, "hd-mac-menu-item-indicator"),
174
+ Chips: macPart(BaseCombobox.Chips, "hd-mac-chip-list"),
175
+ Chip: macPart(BaseCombobox.Chip, "hd-mac-chip"),
176
+ ChipRemove: macPart(BaseCombobox.ChipRemove, "hd-mac-chip-remove"),
177
+ Row: macPart(BaseCombobox.Row, "hd-mac-menu-row"),
178
+ Collection: macPart(BaseCombobox.Collection, "hd-mac-menu-collection"),
179
+ Empty: macPart(BaseCombobox.Empty, "hd-mac-empty-state"),
180
+ Clear: macPart(BaseCombobox.Clear, "hd-mac-button hd-mac-button-plain hd-mac-clear-button"),
181
+ Separator: macPart(BaseCombobox.Separator, "hd-mac-separator"),
182
+ };
183
+
184
+ export const MacContextMenu = {
185
+ Root: macProvider(BaseContextMenu.Root),
186
+ Trigger: macPart(BaseContextMenu.Trigger, "hd-mac-context-trigger"),
187
+ Backdrop: macPart(BaseContextMenu.Backdrop, "hd-mac-backdrop"),
188
+ Portal: macProvider(BaseContextMenu.Portal),
189
+ Positioner: macPart(BaseContextMenu.Positioner, "hd-mac-positioner"),
190
+ Popup: macPart(BaseContextMenu.Popup, "hd-mac hd-mac-popup hd-mac-menu"),
191
+ Arrow: macPart(BaseContextMenu.Arrow, "hd-mac-popup-arrow"),
192
+ Group: macPart(BaseContextMenu.Group, "hd-mac-menu-group"),
193
+ GroupLabel: macPart(BaseContextMenu.GroupLabel, "hd-mac-menu-group-label"),
194
+ Item: macPart(BaseContextMenu.Item, "hd-mac-menu-item"),
195
+ CheckboxItem: macPart(BaseContextMenu.CheckboxItem, "hd-mac-menu-item"),
196
+ CheckboxItemIndicator: macPart(
197
+ BaseContextMenu.CheckboxItemIndicator,
198
+ "hd-mac-menu-item-indicator hd-mac-menu-checkmark-indicator",
199
+ ),
200
+ LinkItem: macPart(BaseContextMenu.LinkItem, "hd-mac-menu-item"),
201
+ RadioGroup: macPart(BaseContextMenu.RadioGroup, "hd-mac-menu-group"),
202
+ RadioItem: macPart(BaseContextMenu.RadioItem, "hd-mac-menu-item"),
203
+ RadioItemIndicator: macPart(
204
+ BaseContextMenu.RadioItemIndicator,
205
+ "hd-mac-menu-item-indicator hd-mac-menu-dot-indicator",
206
+ ),
207
+ SubmenuRoot: macProvider(BaseContextMenu.SubmenuRoot),
208
+ SubmenuTrigger: macPart(BaseContextMenu.SubmenuTrigger, "hd-mac-menu-item hd-mac-submenu-trigger"),
209
+ Separator: macPart(BaseContextMenu.Separator, "hd-mac-separator"),
210
+ };
211
+
212
+ export const MacCSPProvider = macProvider(BaseCSPProvider);
213
+
214
+ export const MacDialog = {
215
+ Backdrop: macPart(BaseDialog.Backdrop, "hd-mac-backdrop"),
216
+ Close: macPart(BaseDialog.Close, "hd-mac-button hd-mac-button-plain"),
217
+ Description: macPart(BaseDialog.Description, "hd-mac-dialog-description"),
218
+ Popup: macPart(BaseDialog.Popup, "hd-mac hd-mac-dialog"),
219
+ SheetPopup: macPart(BaseDialog.Popup, "hd-mac hd-mac-dialog hd-mac-sheet-dialog"),
220
+ Portal: macProvider(BaseDialog.Portal),
221
+ Root: macProvider(BaseDialog.Root),
222
+ Viewport: macPart(BaseDialog.Viewport, "hd-mac-viewport"),
223
+ Title: macPart(BaseDialog.Title, "hd-mac-dialog-title"),
224
+ Trigger: macPart(BaseDialog.Trigger, "hd-mac-button"),
225
+ };
226
+
227
+ export const MacDirectionProvider = macProvider(BaseDirectionProvider);
228
+
229
+ export const MacDrawer = {
230
+ Backdrop: macPart(BaseDrawer.Backdrop, "hd-mac-backdrop"),
231
+ Close: macPart(BaseDrawer.Close, "hd-mac-button hd-mac-button-plain"),
232
+ Content: macPart(BaseDrawer.Content, "hd-mac-drawer-content"),
233
+ Description: macPart(BaseDrawer.Description, "hd-mac-dialog-description"),
234
+ Indent: macPart(BaseDrawer.Indent, "hd-mac-drawer-indent"),
235
+ IndentBackground: macPart(BaseDrawer.IndentBackground, "hd-mac-drawer-indent-background"),
236
+ Popup: macPart(BaseDrawer.Popup, "hd-mac hd-mac-drawer"),
237
+ SidebarPopup: macPart(BaseDrawer.Popup, "hd-mac hd-mac-drawer hd-mac-sidebar-drawer"),
238
+ Portal: macProvider(BaseDrawer.Portal),
239
+ Provider: macProvider(BaseDrawer.Provider),
240
+ Root: macProvider(BaseDrawer.Root),
241
+ SwipeArea: macPart(BaseDrawer.SwipeArea, "hd-mac-drawer-swipe-area"),
242
+ Title: macPart(BaseDrawer.Title, "hd-mac-dialog-title"),
243
+ Trigger: macPart(BaseDrawer.Trigger, "hd-mac-button"),
244
+ Viewport: macPart(BaseDrawer.Viewport, "hd-mac-viewport"),
245
+ };
246
+
247
+ export const MacField = {
248
+ Root: macPart(BaseField.Root, "hd-mac-field"),
249
+ Label: macPart(BaseField.Label, "hd-mac-label"),
250
+ Error: macPart(BaseField.Error, "hd-mac-error-text"),
251
+ Description: macPart(BaseField.Description, "hd-mac-help-text"),
252
+ Control: macPart(BaseField.Control, "hd-mac-field-control"),
253
+ Validity: macPart(BaseField.Validity, "hd-mac-validity"),
254
+ Item: macPart(BaseField.Item, "hd-mac-field-item"),
255
+ };
256
+
257
+ export const MacFieldset = {
258
+ Root: macPart(BaseFieldset.Root, "hd-mac-fieldset"),
259
+ Legend: macPart(BaseFieldset.Legend, "hd-mac-fieldset-legend"),
260
+ };
261
+
262
+ export const MacForm = macPart(BaseForm, "hd-mac-form");
263
+ export const MacInput = macPart(BaseInput, "hd-mac-input");
264
+ export const MacTextField = MacInput;
265
+ export const MacSearchField = macPart(BaseInput, "hd-mac-input hd-mac-search-field");
266
+
267
+ export const MacMenu = {
268
+ Arrow: macPart(BaseMenu.Arrow, "hd-mac-popup-arrow"),
269
+ Backdrop: macPart(BaseMenu.Backdrop, "hd-mac-backdrop"),
270
+ CheckboxItem: macPart(BaseMenu.CheckboxItem, "hd-mac-menu-item"),
271
+ CheckboxItemIndicator: macPart(
272
+ BaseMenu.CheckboxItemIndicator,
273
+ "hd-mac-menu-item-indicator hd-mac-menu-checkmark-indicator",
274
+ ),
275
+ Group: macPart(BaseMenu.Group, "hd-mac-menu-group"),
276
+ GroupLabel: macPart(BaseMenu.GroupLabel, "hd-mac-menu-group-label"),
277
+ Item: macPart(BaseMenu.Item, "hd-mac-menu-item"),
278
+ LinkItem: macPart(BaseMenu.LinkItem, "hd-mac-menu-item"),
279
+ Popup: macPart(BaseMenu.Popup, "hd-mac hd-mac-popup hd-mac-menu"),
280
+ Portal: macProvider(BaseMenu.Portal),
281
+ Positioner: macPart(BaseMenu.Positioner, "hd-mac-positioner"),
282
+ RadioGroup: macPart(BaseMenu.RadioGroup, "hd-mac-menu-group"),
283
+ RadioItem: macPart(BaseMenu.RadioItem, "hd-mac-menu-item"),
284
+ RadioItemIndicator: macPart(
285
+ BaseMenu.RadioItemIndicator,
286
+ "hd-mac-menu-item-indicator hd-mac-menu-dot-indicator",
287
+ ),
288
+ Root: macProvider(BaseMenu.Root),
289
+ SubmenuRoot: macProvider(BaseMenu.SubmenuRoot),
290
+ Trigger: macPart(BaseMenu.Trigger, "hd-mac-button"),
291
+ Viewport: macPart(BaseMenu.Viewport, "hd-mac-viewport"),
292
+ SubmenuTrigger: macPart(BaseMenu.SubmenuTrigger, "hd-mac-menu-item hd-mac-submenu-trigger"),
293
+ Separator: macPart(BaseMenu.Separator, "hd-mac-separator"),
294
+ };
295
+
296
+ export const MacMenubar = macPart(BaseMenubar, "hd-mac hd-mac-menubar");
297
+
298
+ export const MacMeter = {
299
+ Root: macPart(BaseMeter.Root, "hd-mac-meter"),
300
+ Track: macPart(BaseMeter.Track, "hd-mac-meter-track"),
301
+ Indicator: macPart(BaseMeter.Indicator, "hd-mac-meter-indicator"),
302
+ Value: macPart(BaseMeter.Value, "hd-mac-meter-value"),
303
+ Label: macPart(BaseMeter.Label, "hd-mac-label"),
304
+ };
305
+
306
+ export const MacNavigationMenu = {
307
+ Root: macPart(BaseNavigationMenu.Root, "hd-mac hd-mac-navigation-menu"),
308
+ List: macPart(BaseNavigationMenu.List, "hd-mac-navigation-list"),
309
+ Item: macPart(BaseNavigationMenu.Item, "hd-mac-navigation-item"),
310
+ Content: macPart(BaseNavigationMenu.Content, "hd-mac-navigation-content"),
311
+ Trigger: macPart(BaseNavigationMenu.Trigger, "hd-mac-button hd-mac-navigation-trigger"),
312
+ Portal: macProvider(BaseNavigationMenu.Portal),
313
+ Positioner: macPart(BaseNavigationMenu.Positioner, "hd-mac-positioner"),
314
+ Viewport: macPart(BaseNavigationMenu.Viewport, "hd-mac-viewport"),
315
+ Backdrop: macPart(BaseNavigationMenu.Backdrop, "hd-mac-backdrop"),
316
+ Popup: macPart(BaseNavigationMenu.Popup, "hd-mac hd-mac-popup"),
317
+ Arrow: macPart(BaseNavigationMenu.Arrow, "hd-mac-popup-arrow"),
318
+ Link: macPart(BaseNavigationMenu.Link, "hd-mac-navigation-link"),
319
+ Icon: macPart(BaseNavigationMenu.Icon, "hd-mac-control-icon"),
320
+ };
321
+
322
+ export const MacNumberField = {
323
+ Root: macPart(BaseNumberField.Root, "hd-mac-number-field"),
324
+ Group: macPart(BaseNumberField.Group, "hd-mac-input-group"),
325
+ Increment: macPart(BaseNumberField.Increment, "hd-mac-stepper-button"),
326
+ Decrement: macPart(BaseNumberField.Decrement, "hd-mac-stepper-button"),
327
+ Input: macPart(BaseNumberField.Input, "hd-mac-input hd-mac-number-input"),
328
+ ScrubArea: macPart(BaseNumberField.ScrubArea, "hd-mac-scrub-area"),
329
+ ScrubAreaCursor: macPart(BaseNumberField.ScrubAreaCursor, "hd-mac-scrub-cursor"),
330
+ };
331
+
332
+ export const MacOTPField = {
333
+ Root: macPart(BaseOTPField.Root, "hd-mac-otp-field"),
334
+ Input: macPart(BaseOTPField.Input, "hd-mac-input hd-mac-otp-input"),
335
+ Separator: macPart(BaseOTPField.Separator, "hd-mac-otp-separator"),
336
+ };
337
+
338
+ export const MacPopover = {
339
+ Root: macProvider(BasePopover.Root),
340
+ Trigger: macPart(BasePopover.Trigger, "hd-mac-button"),
341
+ Portal: macProvider(BasePopover.Portal),
342
+ Positioner: macPart(BasePopover.Positioner, "hd-mac-positioner"),
343
+ Popup: macPart(BasePopover.Popup, "hd-mac hd-mac-popup hd-mac-popover"),
344
+ Arrow: macPart(BasePopover.Arrow, "hd-mac-popup-arrow"),
345
+ Backdrop: macPart(BasePopover.Backdrop, "hd-mac-backdrop"),
346
+ Title: macPart(BasePopover.Title, "hd-mac-dialog-title"),
347
+ Description: macPart(BasePopover.Description, "hd-mac-dialog-description"),
348
+ Close: macPart(BasePopover.Close, "hd-mac-button hd-mac-button-plain"),
349
+ Viewport: macPart(BasePopover.Viewport, "hd-mac-viewport"),
350
+ };
351
+
352
+ export const MacPreviewCard = {
353
+ Root: macProvider(BasePreviewCard.Root),
354
+ Portal: macProvider(BasePreviewCard.Portal),
355
+ Trigger: macPart(BasePreviewCard.Trigger, "hd-mac-preview-trigger"),
356
+ Positioner: macPart(BasePreviewCard.Positioner, "hd-mac-positioner"),
357
+ Popup: macPart(BasePreviewCard.Popup, "hd-mac hd-mac-popup hd-mac-preview-card"),
358
+ Arrow: macPart(BasePreviewCard.Arrow, "hd-mac-popup-arrow"),
359
+ Backdrop: macPart(BasePreviewCard.Backdrop, "hd-mac-backdrop"),
360
+ Viewport: macPart(BasePreviewCard.Viewport, "hd-mac-viewport"),
361
+ };
362
+
363
+ export const MacProgress = {
364
+ Root: macPart(BaseProgress.Root, "hd-mac-progress"),
365
+ Track: macPart(BaseProgress.Track, "hd-mac-progress-track"),
366
+ Indicator: macPart(BaseProgress.Indicator, "hd-mac-progress-indicator"),
367
+ Value: macPart(BaseProgress.Value, "hd-mac-progress-value"),
368
+ Label: macPart(BaseProgress.Label, "hd-mac-label"),
369
+ };
370
+
371
+ export const MacRadio = {
372
+ Root: macPart(BaseRadio.Root, "hd-mac-radio"),
373
+ Indicator: macPart(BaseRadio.Indicator, "hd-mac-radio-indicator"),
374
+ };
375
+
376
+ export const MacRadioGroup = macPart(BaseRadioGroup, "hd-mac hd-mac-choice-group");
377
+
378
+ export const MacScrollArea = {
379
+ Root: macPart(BaseScrollArea.Root, "hd-mac-scroll-area"),
380
+ Viewport: macPart(BaseScrollArea.Viewport, "hd-mac-scroll-viewport"),
381
+ Scrollbar: macPart(BaseScrollArea.Scrollbar, "hd-mac-scrollbar"),
382
+ Content: macPart(BaseScrollArea.Content, "hd-mac-scroll-content"),
383
+ Thumb: macPart(BaseScrollArea.Thumb, "hd-mac-scroll-thumb"),
384
+ Corner: macPart(BaseScrollArea.Corner, "hd-mac-scroll-corner"),
385
+ };
386
+
387
+ export const MacSelect = {
388
+ Root: macProvider(BaseSelect.Root),
389
+ Label: macPart(BaseSelect.Label, "hd-mac-label"),
390
+ Trigger: macPart(BaseSelect.Trigger, "hd-mac-select-trigger"),
391
+ PopUpButtonTrigger: macPart(BaseSelect.Trigger, "hd-mac-select-trigger hd-mac-pop-up-button"),
392
+ PullDownButtonTrigger: macPart(BaseSelect.Trigger, "hd-mac-button hd-mac-pull-down-button"),
393
+ Value: macPart(BaseSelect.Value, "hd-mac-control-value"),
394
+ Icon: macPart(BaseSelect.Icon, "hd-mac-control-icon"),
395
+ Portal: macProvider(BaseSelect.Portal),
396
+ Backdrop: macPart(BaseSelect.Backdrop, "hd-mac-backdrop"),
397
+ Positioner: macPart(BaseSelect.Positioner, "hd-mac-positioner"),
398
+ Popup: macPart(BaseSelect.Popup, "hd-mac hd-mac-popup"),
399
+ List: macPart(BaseSelect.List, "hd-mac-listbox"),
400
+ Item: macPart(BaseSelect.Item, "hd-mac-menu-item"),
401
+ ItemIndicator: macPart(
402
+ BaseSelect.ItemIndicator,
403
+ "hd-mac-menu-item-indicator hd-mac-menu-checkmark-indicator",
404
+ ),
405
+ ItemText: macPart(BaseSelect.ItemText, "hd-mac-menu-item-text"),
406
+ Arrow: macPart(BaseSelect.Arrow, "hd-mac-popup-arrow"),
407
+ ScrollDownArrow: macPart(BaseSelect.ScrollDownArrow, "hd-mac-scroll-arrow"),
408
+ ScrollUpArrow: macPart(BaseSelect.ScrollUpArrow, "hd-mac-scroll-arrow"),
409
+ Group: macPart(BaseSelect.Group, "hd-mac-menu-group"),
410
+ GroupLabel: macPart(BaseSelect.GroupLabel, "hd-mac-menu-group-label"),
411
+ Separator: macPart(BaseSelect.Separator, "hd-mac-separator"),
412
+ };
413
+
414
+ export const MacSeparator = macPart(BaseSeparator, "hd-mac-separator");
415
+
416
+ export const MacSlider = {
417
+ Root: macPart(BaseSlider.Root, "hd-mac-slider"),
418
+ Label: macPart(BaseSlider.Label, "hd-mac-label"),
419
+ Value: macPart(BaseSlider.Value, "hd-mac-slider-value"),
420
+ Control: macPart(BaseSlider.Control, "hd-mac-slider-control"),
421
+ Track: macPart(BaseSlider.Track, "hd-mac-slider-track"),
422
+ Thumb: macPart(BaseSlider.Thumb, "hd-mac-slider-thumb"),
423
+ Indicator: macPart(BaseSlider.Indicator, "hd-mac-slider-indicator"),
424
+ };
425
+
426
+ export const MacSwitch = {
427
+ Root: macPart(BaseSwitch.Root, "hd-mac-switch"),
428
+ Thumb: macPart(BaseSwitch.Thumb, "hd-mac-switch-thumb"),
429
+ };
430
+
431
+ export const MacTabs = {
432
+ Root: macPart(BaseTabs.Root, "hd-mac-tabs"),
433
+ Tab: macPart(BaseTabs.Tab, "hd-mac-tab"),
434
+ Indicator: macPart(BaseTabs.Indicator, "hd-mac-tab-indicator"),
435
+ Panel: macPart(BaseTabs.Panel, "hd-mac-tab-panel"),
436
+ List: macPart(BaseTabs.List, "hd-mac-tab-list"),
437
+ };
438
+
439
+ export const MacToast = {
440
+ Provider: macProvider(BaseToast.Provider),
441
+ Viewport: macPart(BaseToast.Viewport, "hd-mac-toast-viewport"),
442
+ Root: macPart(BaseToast.Root, "hd-mac hd-mac-toast"),
443
+ Content: macPart(BaseToast.Content, "hd-mac-toast-content"),
444
+ Description: macPart(BaseToast.Description, "hd-mac-toast-description"),
445
+ Title: macPart(BaseToast.Title, "hd-mac-toast-title"),
446
+ Close: macPart(BaseToast.Close, "hd-mac-button hd-mac-button-plain"),
447
+ Action: macPart(BaseToast.Action, "hd-mac-button"),
448
+ Portal: macProvider(BaseToast.Portal),
449
+ Positioner: macPart(BaseToast.Positioner, "hd-mac-toast-positioner"),
450
+ Arrow: macPart(BaseToast.Arrow, "hd-mac-popup-arrow"),
451
+ };
452
+
453
+ export const MacToggle = macPart(BaseToggle, "hd-mac-toggle");
454
+ export const MacToolbarToggle = macPart(BaseToggle, "hd-mac-toggle hd-mac-toolbar-button");
455
+ export const MacToggleGroup = macPart(BaseToggleGroup, "hd-mac-toggle-group");
456
+ export const MacSegmentedToggleGroup = macPart(BaseToggleGroup, "hd-mac-toggle-group hd-mac-segmented-toggle-group");
457
+ export const MacSeparatedSegmentedToggleGroup = macPart(
458
+ BaseToggleGroup,
459
+ "hd-mac-toggle-group hd-mac-segmented-toggle-group hd-mac-separated-segmented-toggle-group",
460
+ );
461
+
462
+ export const MacToolbar = {
463
+ Separator: macPart(BaseToolbar.Separator, "hd-mac-toolbar-separator"),
464
+ Root: macPart(BaseToolbar.Root, "hd-mac-toolbar"),
465
+ Group: macPart(BaseToolbar.Group, "hd-mac-toolbar-group"),
466
+ Button: macPart(BaseToolbar.Button, "hd-mac-toolbar-button"),
467
+ IconButton: macPart(BaseToolbar.Button, "hd-mac-toolbar-button hd-mac-icon-button"),
468
+ Link: macPart(BaseToolbar.Link, "hd-mac-toolbar-link"),
469
+ Input: macPart(BaseToolbar.Input, "hd-mac-input hd-mac-toolbar-input"),
470
+ };
471
+
472
+ export const MacTooltip = {
473
+ Root: macProvider(BaseTooltip.Root),
474
+ Trigger: macPart(BaseTooltip.Trigger, "hd-mac-tooltip-trigger"),
475
+ Portal: macProvider(BaseTooltip.Portal),
476
+ Positioner: macPart(BaseTooltip.Positioner, "hd-mac-positioner"),
477
+ Popup: macPart(BaseTooltip.Popup, "hd-mac hd-mac-tooltip"),
478
+ Arrow: macPart(BaseTooltip.Arrow, "hd-mac-tooltip-arrow"),
479
+ Provider: macProvider(BaseTooltip.Provider),
480
+ Viewport: macPart(BaseTooltip.Viewport, "hd-mac-viewport"),
481
+ };