@liiift-studio/mac-os9-ui 0.2.4 → 0.2.8
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/dist/index.cjs +115 -98
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +96 -44
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +131 -89
- package/dist/index.js +114 -64
- package/dist/index.js.map +1 -1
- package/dist/types/components/Icon/IconLibrary.d.ts +29 -0
- package/dist/types/components/Icon/categories/actions.d.ts +1 -0
- package/dist/types/components/Icon/categories/files.d.ts +1 -0
- package/dist/types/components/Icon/categories/index.d.ts +6 -0
- package/dist/types/components/Icon/categories/media.d.ts +1 -0
- package/dist/types/components/Icon/categories/navigation.d.ts +1 -0
- package/dist/types/components/Icon/categories/status.d.ts +1 -0
- package/dist/types/components/Icon/categories/ui.d.ts +7 -0
- package/dist/types/components/Icon/index.d.ts +4 -0
- package/dist/types/components/Icon/registry.d.ts +29 -0
- package/dist/types/components/Icon/types.d.ts +32 -0
- package/dist/types/components/MenuBar/MenuBar.d.ts +40 -9
- package/dist/types/index.d.ts +2 -2
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -131,6 +131,56 @@ const Icon = React.forwardRef(({ size = 'md', children, label, className = '', .
|
|
|
131
131
|
});
|
|
132
132
|
Icon.displayName = 'Icon';
|
|
133
133
|
|
|
134
|
+
/**
|
|
135
|
+
* Divider icon
|
|
136
|
+
* Vertical divider for menu bars and toolbars
|
|
137
|
+
* Note: Uses a 10x32 viewBox instead of standard 24x24
|
|
138
|
+
*/
|
|
139
|
+
const DividerIcon = () => (jsxRuntime.jsxs(Icon, { label: "Divider", size: "sm", viewBox: "0 0 10 32", children: [jsxRuntime.jsxs("g", { clipPath: "url(#clip0_529_36832)", children: [jsxRuntime.jsx("path", { d: "M8 4H10V32H8V4Z", fill: "#999999" }), jsxRuntime.jsx("path", { d: "M8 0H10V4H8V0Z", fill: "#999999" }), jsxRuntime.jsx("path", { d: "M0 4H2V32H0V4Z", fill: "white" }), jsxRuntime.jsx("path", { d: "M0 0H2V4H0V0Z", fill: "white" }), jsxRuntime.jsx("path", { d: "M5 28H7V30H5V28Z", fill: "#BBBBBB" }), jsxRuntime.jsx("path", { d: "M5 21H7V23H5V21Z", fill: "#BBBBBB" }), jsxRuntime.jsx("path", { d: "M5 14H7V16H5V14Z", fill: "#BBBBBB" }), jsxRuntime.jsx("path", { d: "M5 7H7V9H5V7Z", fill: "#BBBBBB" }), jsxRuntime.jsx("path", { d: "M5 4H7V2H5V4Z", fill: "#BBBBBB" }), jsxRuntime.jsx("path", { d: "M5 30H7V32H5V30Z", fill: "white" }), jsxRuntime.jsx("path", { d: "M5 23H7V25H5V23Z", fill: "white" }), jsxRuntime.jsx("path", { d: "M5 16H7V18H5V16Z", fill: "white" }), jsxRuntime.jsx("path", { d: "M5 9H7V11H5V9Z", fill: "white" }), jsxRuntime.jsx("path", { d: "M5 2H7V0H5V2Z", fill: "white" }), jsxRuntime.jsx("path", { d: "M3 28H5V30H3V28Z", fill: "#999999" }), jsxRuntime.jsx("path", { d: "M3 21H5V23H3V21Z", fill: "#999999" }), jsxRuntime.jsx("path", { d: "M3 14H5V16H3V14Z", fill: "#999999" }), jsxRuntime.jsx("path", { d: "M3 7H5V9H3V7Z", fill: "#999999" }), jsxRuntime.jsx("path", { d: "M3 4H5V2H3V4Z", fill: "#999999" }), jsxRuntime.jsx("path", { d: "M3 30H5V32H3V30Z", fill: "#BBBBBB" }), jsxRuntime.jsx("path", { d: "M3 23H5V25H3V23Z", fill: "#BBBBBB" }), jsxRuntime.jsx("path", { d: "M3 16H5V18H3V16Z", fill: "#BBBBBB" }), jsxRuntime.jsx("path", { d: "M3 9H5V11H3V9Z", fill: "#BBBBBB" }), jsxRuntime.jsx("path", { d: "M3 2H5V0H3V2Z", fill: "#BBBBBB" })] }), jsxRuntime.jsx("defs", { children: jsxRuntime.jsx("clipPath", { id: "clip0_529_36832", children: jsxRuntime.jsx("rect", { width: "10", height: "32", fill: "white" }) }) })] }));
|
|
140
|
+
|
|
141
|
+
// Icon Registry - Mac OS 9 React UI
|
|
142
|
+
// Central registry of all available icons with type-safe names
|
|
143
|
+
/**
|
|
144
|
+
* Central icon registry
|
|
145
|
+
* Maps icon names to their components
|
|
146
|
+
*/
|
|
147
|
+
const iconRegistry = {
|
|
148
|
+
// UI
|
|
149
|
+
divider: DividerIcon,
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Get icon component by name
|
|
153
|
+
* @param name - The icon name from the registry
|
|
154
|
+
* @returns The icon component or undefined if not found
|
|
155
|
+
*/
|
|
156
|
+
function getIcon(name) {
|
|
157
|
+
return iconRegistry[name];
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* IconLibrary component for Mac OS 9 UI
|
|
162
|
+
*
|
|
163
|
+
* Provides a convenient way to use icons by name rather than importing each one individually.
|
|
164
|
+
* All icons are registered in the icon registry and can be accessed by their string names.
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```tsx
|
|
168
|
+
* <IconLibrary icon="save" size="md" />
|
|
169
|
+
* <IconLibrary icon="folder" size="lg" />
|
|
170
|
+
* <IconLibrary icon="arrow-right" size="sm" />
|
|
171
|
+
* ```
|
|
172
|
+
*/
|
|
173
|
+
const IconLibrary = ({ icon, ...props }) => {
|
|
174
|
+
const IconComponent = getIcon(icon);
|
|
175
|
+
if (!IconComponent) {
|
|
176
|
+
console.warn(`Icon "${icon}" not found in registry`);
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
// Render the icon component with any additional props
|
|
180
|
+
return jsxRuntime.jsx(IconComponent, { ...props });
|
|
181
|
+
};
|
|
182
|
+
IconLibrary.displayName = 'IconLibrary';
|
|
183
|
+
|
|
134
184
|
var styles$c = {"pixelated-corner-sm":"IconButton-module_pixelated-corner-sm","pixelated-corner-md":"IconButton-module_pixelated-corner-md","pixelated-corner-pseudo":"IconButton-module_pixelated-corner-pseudo","mac-corner":"IconButton-module_mac-corner","chamfered-sm":"IconButton-module_chamfered-sm","chamfered-md":"IconButton-module_chamfered-md","tab-corner":"IconButton-module_tab-corner","button-corner":"IconButton-module_button-corner","window-corner":"IconButton-module_window-corner","iconButton":"IconButton-module_iconButton","icon":"IconButton-module_icon","label":"IconButton-module_label","iconButton--label-top":"IconButton-module_iconButton--label-top","iconButton--label-bottom":"IconButton-module_iconButton--label-bottom","iconButton--label-left":"IconButton-module_iconButton--label-left","iconButton--label-right":"IconButton-module_iconButton--label-right","iconButton--sm":"IconButton-module_iconButton--sm","iconButton--with-label":"IconButton-module_iconButton--with-label","iconButton--md":"IconButton-module_iconButton--md","iconButton--lg":"IconButton-module_iconButton--lg","iconButton--default":"IconButton-module_iconButton--default","iconButton--primary":"IconButton-module_iconButton--primary","iconButton--danger":"IconButton-module_iconButton--danger","iconButton--disabled":"IconButton-module_iconButton--disabled"};
|
|
135
185
|
|
|
136
186
|
// IconButton component - Mac OS 9 style button with icon
|
|
@@ -865,17 +915,20 @@ const Dialog = React.forwardRef(({ open = false, onClose, closeOnBackdropClick =
|
|
|
865
915
|
});
|
|
866
916
|
Dialog.displayName = 'Dialog';
|
|
867
917
|
|
|
868
|
-
var styles$4 = {"menuBar":"MenuBar-module_menuBar","menuContainer":"MenuBar-module_menuContainer","menuButton":"MenuBar-module_menuButton","menuButton--disabled":"MenuBar-module_menuButton--disabled","menuButton--open":"MenuBar-module_menuButton--open","dropdown":"MenuBar-module_dropdown"};
|
|
918
|
+
var styles$4 = {"menuBar":"MenuBar-module_menuBar","leftContent":"MenuBar-module_leftContent","menusContainer":"MenuBar-module_menusContainer","menuContainer":"MenuBar-module_menuContainer","rightContent":"MenuBar-module_rightContent","menuButton":"MenuBar-module_menuButton","menuButton--disabled":"MenuBar-module_menuButton--disabled","menuButton--open":"MenuBar-module_menuButton--open","dropdown":"MenuBar-module_dropdown"};
|
|
869
919
|
|
|
870
920
|
/**
|
|
871
921
|
* Mac OS 9 style MenuBar component
|
|
872
922
|
*
|
|
873
|
-
* Horizontal menu bar with dropdown menus.
|
|
923
|
+
* Horizontal menu bar with dropdown menus, logo support, and status area.
|
|
874
924
|
*
|
|
875
925
|
* Features:
|
|
876
926
|
* - Classic Mac OS 9 menu bar styling
|
|
877
927
|
* - Horizontal menu layout
|
|
878
928
|
* - Dropdown menus on click
|
|
929
|
+
* - Link-type menu items for navigation
|
|
930
|
+
* - Logo/icon support on the left
|
|
931
|
+
* - Status area on the right (clock, system indicators, etc.)
|
|
879
932
|
* - Keyboard navigation (Left/Right for menus, Up/Down for items)
|
|
880
933
|
* - Click outside to close
|
|
881
934
|
* - Escape key to close
|
|
@@ -887,12 +940,14 @@ var styles$4 = {"menuBar":"MenuBar-module_menuBar","menuContainer":"MenuBar-modu
|
|
|
887
940
|
* const [openMenu, setOpenMenu] = useState<number | undefined>();
|
|
888
941
|
*
|
|
889
942
|
* <MenuBar
|
|
943
|
+
* leftContent={<img src="/logo.png" alt="Logo" width={16} height={16} />}
|
|
890
944
|
* openMenuIndex={openMenu}
|
|
891
945
|
* onMenuOpen={setOpenMenu}
|
|
892
946
|
* onMenuClose={() => setOpenMenu(undefined)}
|
|
893
947
|
* menus={[
|
|
894
948
|
* {
|
|
895
949
|
* label: 'File',
|
|
950
|
+
* type: 'dropdown',
|
|
896
951
|
* items: (
|
|
897
952
|
* <>
|
|
898
953
|
* <MenuItem label="Open..." shortcut="⌘O" onClick={() => {}} />
|
|
@@ -901,19 +956,20 @@ var styles$4 = {"menuBar":"MenuBar-module_menuBar","menuContainer":"MenuBar-modu
|
|
|
901
956
|
* ),
|
|
902
957
|
* },
|
|
903
958
|
* {
|
|
904
|
-
* label: '
|
|
905
|
-
*
|
|
906
|
-
*
|
|
907
|
-
* <MenuItem label="Undo" shortcut="⌘Z" onClick={() => {}} />
|
|
908
|
-
* <MenuItem label="Redo" shortcut="⇧⌘Z" onClick={() => {}} />
|
|
909
|
-
* </>
|
|
910
|
-
* ),
|
|
959
|
+
* label: 'Home',
|
|
960
|
+
* type: 'link',
|
|
961
|
+
* href: '/',
|
|
911
962
|
* },
|
|
912
963
|
* ]}
|
|
964
|
+
* rightContent={[
|
|
965
|
+
* <Clock key="clock" />,
|
|
966
|
+
* <div key="divider" className={styles.divider} />,
|
|
967
|
+
* <SystemIndicator key="indicator" />,
|
|
968
|
+
* ]}
|
|
913
969
|
* />
|
|
914
970
|
* ```
|
|
915
971
|
*/
|
|
916
|
-
const MenuBar = React.forwardRef(({ menus, openMenuIndex, onMenuOpen, onMenuClose, className = '', dropdownClassName = '' }, ref) => {
|
|
972
|
+
const MenuBar = React.forwardRef(({ menus, openMenuIndex, onMenuOpen, onMenuClose, className = '', dropdownClassName = '', leftContent, rightContent, }, ref) => {
|
|
917
973
|
const [menuBarElement, setMenuBarElement] = React.useState(null);
|
|
918
974
|
const [focusedIndex, setFocusedIndex] = React.useState(-1);
|
|
919
975
|
// Handle click outside to close menu
|
|
@@ -973,8 +1029,9 @@ const MenuBar = React.forwardRef(({ menus, openMenuIndex, onMenuOpen, onMenuClos
|
|
|
973
1029
|
case 'ArrowDown':
|
|
974
1030
|
event.preventDefault();
|
|
975
1031
|
if (openMenuIndex === undefined && focusedIndex >= 0) {
|
|
976
|
-
// Open the focused menu
|
|
977
|
-
|
|
1032
|
+
// Open the focused menu (only if it's a dropdown)
|
|
1033
|
+
const menu = menus[focusedIndex];
|
|
1034
|
+
if (!menu?.disabled && menu?.type !== 'link') {
|
|
978
1035
|
onMenuOpen?.(focusedIndex);
|
|
979
1036
|
}
|
|
980
1037
|
}
|
|
@@ -983,9 +1040,16 @@ const MenuBar = React.forwardRef(({ menus, openMenuIndex, onMenuOpen, onMenuClos
|
|
|
983
1040
|
case ' ':
|
|
984
1041
|
event.preventDefault();
|
|
985
1042
|
if (openMenuIndex === undefined && focusedIndex >= 0) {
|
|
986
|
-
|
|
987
|
-
if (!
|
|
988
|
-
|
|
1043
|
+
const menu = menus[focusedIndex];
|
|
1044
|
+
if (!menu?.disabled) {
|
|
1045
|
+
if (menu.type === 'link') {
|
|
1046
|
+
// Trigger click handler for link-type menu
|
|
1047
|
+
menu.onClick?.();
|
|
1048
|
+
}
|
|
1049
|
+
else {
|
|
1050
|
+
// Open the focused dropdown menu
|
|
1051
|
+
onMenuOpen?.(focusedIndex);
|
|
1052
|
+
}
|
|
989
1053
|
}
|
|
990
1054
|
}
|
|
991
1055
|
break;
|
|
@@ -993,8 +1057,14 @@ const MenuBar = React.forwardRef(({ menus, openMenuIndex, onMenuOpen, onMenuClos
|
|
|
993
1057
|
}, [openMenuIndex, focusedIndex, menus, onMenuOpen, onMenuClose]);
|
|
994
1058
|
// Handle menu button click
|
|
995
1059
|
const handleMenuClick = (index) => {
|
|
996
|
-
|
|
1060
|
+
const menu = menus[index];
|
|
1061
|
+
if (menu?.disabled)
|
|
997
1062
|
return;
|
|
1063
|
+
if (menu.type === 'link') {
|
|
1064
|
+
// For link-type menus, trigger the onClick handler
|
|
1065
|
+
menu.onClick?.();
|
|
1066
|
+
return;
|
|
1067
|
+
}
|
|
998
1068
|
if (openMenuIndex === index) {
|
|
999
1069
|
// Clicking the same menu closes it
|
|
1000
1070
|
onMenuClose?.();
|
|
@@ -1013,18 +1083,34 @@ const MenuBar = React.forwardRef(({ menus, openMenuIndex, onMenuOpen, onMenuClos
|
|
|
1013
1083
|
if (typeof ref === 'function') {
|
|
1014
1084
|
ref(node);
|
|
1015
1085
|
}
|
|
1086
|
+
else if (ref) {
|
|
1087
|
+
ref.current = node;
|
|
1088
|
+
}
|
|
1016
1089
|
}, [ref]);
|
|
1017
|
-
return (jsxRuntime.
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1090
|
+
return (jsxRuntime.jsxs("div", { ref: handleRef, className: menuBarClassNames, role: "menubar", onKeyDown: handleKeyDown, children: [leftContent && (jsxRuntime.jsx("div", { className: styles$4.leftContent, children: leftContent })), jsxRuntime.jsx("div", { className: styles$4.menusContainer, children: menus.map((menu, index) => {
|
|
1091
|
+
const isOpen = openMenuIndex === index;
|
|
1092
|
+
const isDropdown = menu.type !== 'link';
|
|
1093
|
+
const menuButtonClassNames = [
|
|
1094
|
+
styles$4.menuButton,
|
|
1095
|
+
isOpen ? styles$4['menuButton--open'] : '',
|
|
1096
|
+
menu.disabled ? styles$4['menuButton--disabled'] : '',
|
|
1097
|
+
]
|
|
1098
|
+
.filter(Boolean)
|
|
1099
|
+
.join(' ');
|
|
1100
|
+
// For link-type menus, render as anchor if href is provided
|
|
1101
|
+
if (menu.type === 'link' && menu.href) {
|
|
1102
|
+
return (jsxRuntime.jsx("div", { className: styles$4.menuContainer, children: jsxRuntime.jsx("a", { href: menu.href, className: menuButtonClassNames, onClick: (e) => {
|
|
1103
|
+
if (menu.onClick) {
|
|
1104
|
+
e.preventDefault();
|
|
1105
|
+
menu.onClick();
|
|
1106
|
+
}
|
|
1107
|
+
}, onFocus: () => setFocusedIndex(index), onBlur: () => setFocusedIndex(-1), "aria-disabled": menu.disabled, children: menu.label }) }, index));
|
|
1108
|
+
}
|
|
1109
|
+
// Standard dropdown menu or link without href
|
|
1110
|
+
return (jsxRuntime.jsxs("div", { className: styles$4.menuContainer, children: [jsxRuntime.jsx("button", { type: "button", className: menuButtonClassNames, onClick: () => handleMenuClick(index), onFocus: () => setFocusedIndex(index), onBlur: () => setFocusedIndex(-1), disabled: menu.disabled, "aria-haspopup": isDropdown ? 'true' : undefined, "aria-expanded": isOpen, "aria-disabled": menu.disabled, children: menu.label }), isOpen && isDropdown && menu.items && (jsxRuntime.jsx("div", { className: dropdownClassNames, role: "menu", children: menu.items }))] }, index));
|
|
1111
|
+
}) }), rightContent && (jsxRuntime.jsx("div", { className: styles$4.rightContent, children: Array.isArray(rightContent)
|
|
1112
|
+
? rightContent.map((item, index) => (jsxRuntime.jsx(React.Fragment, { children: item }, index)))
|
|
1113
|
+
: rightContent }))] }));
|
|
1028
1114
|
});
|
|
1029
1115
|
MenuBar.displayName = 'MenuBar';
|
|
1030
1116
|
|
|
@@ -1335,42 +1421,6 @@ const FolderList = React.forwardRef(({ columns = [
|
|
|
1335
1421
|
});
|
|
1336
1422
|
FolderList.displayName = 'FolderList';
|
|
1337
1423
|
|
|
1338
|
-
const SaveIcon = () => (jsxRuntime.jsx(Icon, { label: "Save", size: "sm", children: jsxRuntime.jsx("path", { d: "M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z" }) }));
|
|
1339
|
-
const FolderIcon = () => (jsxRuntime.jsx(Icon, { label: "Folder", size: "sm", children: jsxRuntime.jsx("path", { d: "M10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z" }) }));
|
|
1340
|
-
const CloseIcon = () => (jsxRuntime.jsx(Icon, { label: "Close", size: "sm", children: jsxRuntime.jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) }));
|
|
1341
|
-
const ArrowRightIcon = () => (jsxRuntime.jsx(Icon, { label: "Arrow Right", size: "sm", children: jsxRuntime.jsx("path", { d: "M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z" }) }));
|
|
1342
|
-
const ArrowLeftIcon = () => (jsxRuntime.jsx(Icon, { label: "Arrow Left", size: "sm", children: jsxRuntime.jsx("path", { d: "M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z" }) }));
|
|
1343
|
-
const DownloadIcon = () => (jsxRuntime.jsx(Icon, { label: "Download", size: "sm", children: jsxRuntime.jsx("path", { d: "M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z" }) }));
|
|
1344
|
-
const LinkIcon = () => (jsxRuntime.jsx(Icon, { label: "Link", size: "sm", children: jsxRuntime.jsx("path", { d: "M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z" }) }));
|
|
1345
|
-
const MailIcon = () => (jsxRuntime.jsx(Icon, { label: "Mail", size: "sm", children: jsxRuntime.jsx("path", { d: "M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z" }) }));
|
|
1346
|
-
const PrintIcon = () => (jsxRuntime.jsx(Icon, { label: "Print", size: "sm", children: jsxRuntime.jsx("path", { d: "M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z" }) }));
|
|
1347
|
-
const TrashIcon = () => (jsxRuntime.jsx(Icon, { label: "Delete", size: "sm", children: jsxRuntime.jsx("path", { d: "M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z" }) }));
|
|
1348
|
-
const SearchIcon = () => (jsxRuntime.jsx(Icon, { label: "Search", size: "sm", children: jsxRuntime.jsx("path", { d: "M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" }) }));
|
|
1349
|
-
const UserIcon = () => (jsxRuntime.jsx(Icon, { label: "User", size: "sm", children: jsxRuntime.jsx("path", { d: "M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z" }) }));
|
|
1350
|
-
const LockIcon = () => (jsxRuntime.jsx(Icon, { label: "Lock", size: "sm", children: jsxRuntime.jsx("path", { d: "M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z" }) }));
|
|
1351
|
-
const CalendarIcon = () => (jsxRuntime.jsx(Icon, { label: "Calendar", size: "sm", children: jsxRuntime.jsx("path", { d: "M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z" }) }));
|
|
1352
|
-
const DocumentIcon = () => (jsxRuntime.jsx(Icon, { label: "Document", size: "sm", children: jsxRuntime.jsx("path", { d: "M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z" }) }));
|
|
1353
|
-
const FileIcon = () => (jsxRuntime.jsx(Icon, { label: "File", size: "sm", children: jsxRuntime.jsx("path", { d: "M8 16h8v2H8zm0-4h8v2H8zm6-10H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z" }) }));
|
|
1354
|
-
const ImageIcon = () => (jsxRuntime.jsx(Icon, { label: "Image", size: "sm", children: jsxRuntime.jsx("path", { d: "M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z" }) }));
|
|
1355
|
-
const MusicIcon = () => (jsxRuntime.jsx(Icon, { label: "Music", size: "sm", children: jsxRuntime.jsx("path", { d: "M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z" }) }));
|
|
1356
|
-
const VideoIcon = () => (jsxRuntime.jsx(Icon, { label: "Video", size: "sm", children: jsxRuntime.jsx("path", { d: "M18 4l2 4h-3l-2-4h-2l2 4h-3l-2-4H8l2 4H7L5 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4h-4z" }) }));
|
|
1357
|
-
const SettingsIcon = () => (jsxRuntime.jsx(Icon, { label: "Settings", size: "sm", children: jsxRuntime.jsx("path", { d: "M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94L14.4 2.81c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z" }) }));
|
|
1358
|
-
const HomeIcon = () => (jsxRuntime.jsx(Icon, { label: "Home", size: "sm", children: jsxRuntime.jsx("path", { d: "M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z" }) }));
|
|
1359
|
-
const StarIcon = () => (jsxRuntime.jsx(Icon, { label: "Star", size: "sm", children: jsxRuntime.jsx("path", { d: "M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z" }) }));
|
|
1360
|
-
const HeartIcon = () => (jsxRuntime.jsx(Icon, { label: "Heart", size: "sm", children: jsxRuntime.jsx("path", { d: "M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" }) }));
|
|
1361
|
-
const InfoIcon = () => (jsxRuntime.jsx(Icon, { label: "Info", size: "sm", children: jsxRuntime.jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z" }) }));
|
|
1362
|
-
const WarningIcon = () => (jsxRuntime.jsx(Icon, { label: "Warning", size: "sm", children: jsxRuntime.jsx("path", { d: "M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z" }) }));
|
|
1363
|
-
const ErrorIcon = () => (jsxRuntime.jsx(Icon, { label: "Error", size: "sm", children: jsxRuntime.jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z" }) }));
|
|
1364
|
-
const CheckIcon = () => (jsxRuntime.jsx(Icon, { label: "Check", size: "sm", children: jsxRuntime.jsx("path", { d: "M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z" }) }));
|
|
1365
|
-
const PlusIcon = () => (jsxRuntime.jsx(Icon, { label: "Plus", size: "sm", children: jsxRuntime.jsx("path", { d: "M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" }) }));
|
|
1366
|
-
const MinusIcon = () => (jsxRuntime.jsx(Icon, { label: "Minus", size: "sm", children: jsxRuntime.jsx("path", { d: "M19 13H5v-2h14v2z" }) }));
|
|
1367
|
-
const RefreshIcon = () => (jsxRuntime.jsx(Icon, { label: "Refresh", size: "sm", children: jsxRuntime.jsx("path", { d: "M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z" }) }));
|
|
1368
|
-
const MenuIcon = () => (jsxRuntime.jsx(Icon, { label: "Menu", size: "sm", children: jsxRuntime.jsx("path", { d: "M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" }) }));
|
|
1369
|
-
const MoreIcon = () => (jsxRuntime.jsx(Icon, { label: "More", size: "sm", children: jsxRuntime.jsx("path", { d: "M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" }) }));
|
|
1370
|
-
const ChevronUpIcon = () => (jsxRuntime.jsx(Icon, { label: "Chevron Up", size: "sm", children: jsxRuntime.jsx("path", { d: "M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z" }) }));
|
|
1371
|
-
const ChevronDownIcon = () => (jsxRuntime.jsx(Icon, { label: "Chevron Down", size: "sm", children: jsxRuntime.jsx("path", { d: "M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z" }) }));
|
|
1372
|
-
const EyeIcon = () => (jsxRuntime.jsx(Icon, { label: "Eye", size: "sm", children: jsxRuntime.jsx("path", { d: "M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z" }) }));
|
|
1373
|
-
|
|
1374
1424
|
// Mac OS 9 Design Tokens
|
|
1375
1425
|
// Extracted from Figma file: vy2T5MCXFz7QWf4Ba86eqN
|
|
1376
1426
|
// Reference: docs/figma-map.md
|
|
@@ -1589,56 +1639,23 @@ const tokens = {
|
|
|
1589
1639
|
transitions,
|
|
1590
1640
|
};
|
|
1591
1641
|
|
|
1592
|
-
exports.ArrowLeftIcon = ArrowLeftIcon;
|
|
1593
|
-
exports.ArrowRightIcon = ArrowRightIcon;
|
|
1594
1642
|
exports.Button = Button;
|
|
1595
|
-
exports.CalendarIcon = CalendarIcon;
|
|
1596
|
-
exports.CheckIcon = CheckIcon;
|
|
1597
1643
|
exports.Checkbox = Checkbox;
|
|
1598
|
-
exports.ChevronDownIcon = ChevronDownIcon;
|
|
1599
|
-
exports.ChevronUpIcon = ChevronUpIcon;
|
|
1600
|
-
exports.CloseIcon = CloseIcon;
|
|
1601
1644
|
exports.Dialog = Dialog;
|
|
1602
|
-
exports.
|
|
1603
|
-
exports.DownloadIcon = DownloadIcon;
|
|
1604
|
-
exports.ErrorIcon = ErrorIcon;
|
|
1605
|
-
exports.EyeIcon = EyeIcon;
|
|
1606
|
-
exports.FileIcon = FileIcon;
|
|
1607
|
-
exports.FolderIcon = FolderIcon;
|
|
1645
|
+
exports.DividerIcon = DividerIcon;
|
|
1608
1646
|
exports.FolderList = FolderList;
|
|
1609
|
-
exports.HeartIcon = HeartIcon;
|
|
1610
|
-
exports.HomeIcon = HomeIcon;
|
|
1611
1647
|
exports.Icon = Icon;
|
|
1612
1648
|
exports.IconButton = IconButton;
|
|
1613
|
-
exports.
|
|
1614
|
-
exports.InfoIcon = InfoIcon;
|
|
1615
|
-
exports.LinkIcon = LinkIcon;
|
|
1649
|
+
exports.IconLibrary = IconLibrary;
|
|
1616
1650
|
exports.ListView = ListView;
|
|
1617
|
-
exports.LockIcon = LockIcon;
|
|
1618
|
-
exports.MailIcon = MailIcon;
|
|
1619
1651
|
exports.MenuBar = MenuBar;
|
|
1620
|
-
exports.MenuIcon = MenuIcon;
|
|
1621
1652
|
exports.MenuItem = MenuItem;
|
|
1622
|
-
exports.MinusIcon = MinusIcon;
|
|
1623
|
-
exports.MoreIcon = MoreIcon;
|
|
1624
|
-
exports.MusicIcon = MusicIcon;
|
|
1625
|
-
exports.PlusIcon = PlusIcon;
|
|
1626
|
-
exports.PrintIcon = PrintIcon;
|
|
1627
1653
|
exports.Radio = Radio;
|
|
1628
|
-
exports.RefreshIcon = RefreshIcon;
|
|
1629
|
-
exports.SaveIcon = SaveIcon;
|
|
1630
1654
|
exports.Scrollbar = Scrollbar;
|
|
1631
|
-
exports.SearchIcon = SearchIcon;
|
|
1632
1655
|
exports.Select = Select;
|
|
1633
|
-
exports.SettingsIcon = SettingsIcon;
|
|
1634
|
-
exports.StarIcon = StarIcon;
|
|
1635
1656
|
exports.TabPanel = TabPanel;
|
|
1636
1657
|
exports.Tabs = Tabs;
|
|
1637
1658
|
exports.TextField = TextField;
|
|
1638
|
-
exports.TrashIcon = TrashIcon;
|
|
1639
|
-
exports.UserIcon = UserIcon;
|
|
1640
|
-
exports.VideoIcon = VideoIcon;
|
|
1641
|
-
exports.WarningIcon = WarningIcon;
|
|
1642
1659
|
exports.Window = Window;
|
|
1643
1660
|
exports.borders = borders;
|
|
1644
1661
|
exports.colors = colors;
|