@moldable-ai/ui 0.2.29 → 0.2.32
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/catalog/component-catalog.d.ts +9 -2
- package/dist/catalog/component-catalog.d.ts.map +1 -1
- package/dist/catalog/component-catalog.js +11 -7
- package/dist/catalog/core-control-stories.d.ts.map +1 -1
- package/dist/catalog/core-control-stories.js +1 -1
- package/dist/catalog/core-foundation-stories.d.ts.map +1 -1
- package/dist/catalog/core-foundation-stories.js +5 -5
- package/dist/components/app-error-boundary.d.ts +1 -1
- package/dist/components/chat/chat-image-lightbox.d.ts +8 -0
- package/dist/components/chat/chat-image-lightbox.d.ts.map +1 -1
- package/dist/components/chat/chat-image-lightbox.js +24 -2
- package/dist/components/chat/chat-input.d.ts +3 -2
- package/dist/components/chat/chat-input.d.ts.map +1 -1
- package/dist/components/chat/chat-input.js +3 -3
- package/dist/components/chat/chat-message.d.ts.map +1 -1
- package/dist/components/chat/chat-message.js +3 -1
- package/dist/components/chat/chat-panel.d.ts +3 -1
- package/dist/components/chat/chat-panel.d.ts.map +1 -1
- package/dist/components/chat/chat-panel.js +53 -39
- package/dist/components/chat/conversation-history.d.ts +4 -2
- package/dist/components/chat/conversation-history.d.ts.map +1 -1
- package/dist/components/chat/conversation-history.js +20 -15
- package/dist/components/ui/alert.d.ts +1 -1
- package/dist/components/ui/app-frame.d.ts +20 -1
- package/dist/components/ui/app-frame.d.ts.map +1 -1
- package/dist/components/ui/app-frame.js +37 -7
- package/dist/components/ui/badge.d.ts +1 -1
- package/dist/components/ui/badge.js +1 -1
- package/dist/components/ui/button.d.ts +5 -3
- package/dist/components/ui/button.d.ts.map +1 -1
- package/dist/components/ui/button.js +39 -11
- package/dist/components/ui/card.d.ts +12 -2
- package/dist/components/ui/card.d.ts.map +1 -1
- package/dist/components/ui/card.js +3 -2
- package/dist/components/ui/checkbox.d.ts +4 -1
- package/dist/components/ui/checkbox.d.ts.map +1 -1
- package/dist/components/ui/checkbox.js +4 -4
- package/dist/components/ui/context-menu.d.ts.map +1 -1
- package/dist/components/ui/context-menu.js +7 -6
- package/dist/components/ui/date-field.d.ts +1 -1
- package/dist/components/ui/dropdown-menu.d.ts +1 -0
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
- package/dist/components/ui/dropdown-menu.js +9 -8
- package/dist/components/ui/icon-button.d.ts +1 -1
- package/dist/components/ui/icon-button.d.ts.map +1 -1
- package/dist/components/ui/icon-button.js +1 -0
- package/dist/components/ui/input.d.ts +6 -2
- package/dist/components/ui/input.d.ts.map +1 -1
- package/dist/components/ui/input.js +2 -2
- package/dist/components/ui/material.d.ts +8 -3
- package/dist/components/ui/material.d.ts.map +1 -1
- package/dist/components/ui/material.js +2 -2
- package/dist/components/ui/menu-items.d.ts +2 -1
- package/dist/components/ui/menu-items.d.ts.map +1 -1
- package/dist/components/ui/menu-items.js +3 -2
- package/dist/components/ui/message-scroller-controller.d.ts +15 -17
- package/dist/components/ui/message-scroller-controller.d.ts.map +1 -1
- package/dist/components/ui/message-scroller-controller.js +106 -91
- package/dist/components/ui/message-scroller-primitive.d.ts +2 -0
- package/dist/components/ui/message-scroller-primitive.d.ts.map +1 -1
- package/dist/components/ui/message-scroller-primitive.js +2 -0
- package/dist/components/ui/message-scroller.d.ts.map +1 -1
- package/dist/components/ui/message-scroller.js +2 -2
- package/dist/components/ui/number-input.d.ts +1 -1
- package/dist/components/ui/popover.js +1 -1
- package/dist/components/ui/search-field.d.ts +4 -2
- package/dist/components/ui/search-field.d.ts.map +1 -1
- package/dist/components/ui/search-field.js +16 -6
- package/dist/components/ui/segmented-control.d.ts +3 -1
- package/dist/components/ui/segmented-control.d.ts.map +1 -1
- package/dist/components/ui/segmented-control.js +23 -17
- package/dist/components/ui/select.js +2 -2
- package/dist/components/ui/sidebar.d.ts +10 -4
- package/dist/components/ui/sidebar.d.ts.map +1 -1
- package/dist/components/ui/sidebar.js +74 -17
- package/dist/components/ui/status.d.ts +1 -1
- package/dist/components/ui/status.js +1 -1
- package/dist/components/ui/switch.d.ts +3 -1
- package/dist/components/ui/switch.d.ts.map +1 -1
- package/dist/components/ui/switch.js +3 -2
- package/dist/components/ui/toolbar-controls.d.ts +13 -3
- package/dist/components/ui/toolbar-controls.d.ts.map +1 -1
- package/dist/components/ui/toolbar-controls.js +35 -10
- package/dist/components/ui/toolbar.d.ts +5 -4
- package/dist/components/ui/toolbar.d.ts.map +1 -1
- package/dist/components/ui/toolbar.js +3 -3
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/lib/frame-lifecycle.d.ts +1 -0
- package/dist/lib/frame-lifecycle.d.ts.map +1 -1
- package/dist/lib/frame-lifecycle.js +7 -0
- package/dist/lib/theme.d.ts +39 -5
- package/dist/lib/theme.d.ts.map +1 -1
- package/dist/lib/theme.js +105 -17
- package/dist/tokens/contracts.d.ts +79 -0
- package/dist/tokens/contracts.d.ts.map +1 -0
- package/dist/tokens/contracts.js +57 -0
- package/dist/tokens/index.d.ts +2 -0
- package/dist/tokens/index.d.ts.map +1 -0
- package/dist/tokens/index.js +1 -0
- package/docs/README.md +2 -0
- package/docs/adaptive-materials.md +14 -9
- package/docs/design-tokens.md +10 -6
- package/docs/foundations.md +3 -3
- package/docs/macos-design-audit.md +144 -0
- package/docs/native-integration.md +4 -4
- package/docs/platform-architecture.md +189 -0
- package/docs/standalone-app-windows.md +37 -0
- package/docs/visual-regression.md +6 -8
- package/package.json +13 -1
- package/src/components/ui/accordion.md +46 -0
- package/src/components/ui/alert.md +12 -4
- package/src/components/ui/app-frame.md +8 -5
- package/src/components/ui/aspect-ratio.md +37 -0
- package/src/components/ui/avatar.md +48 -0
- package/src/components/ui/breadcrumb.md +52 -0
- package/src/components/ui/button-group.md +43 -0
- package/src/components/ui/button.md +21 -4
- package/src/components/ui/calendar.md +42 -0
- package/src/components/ui/card.md +43 -0
- package/src/components/ui/carousel.md +47 -0
- package/src/components/ui/chart.md +52 -0
- package/src/components/ui/checkbox.md +36 -0
- package/src/components/ui/collapsible.md +2 -3
- package/src/components/ui/color-well.md +14 -4
- package/src/components/ui/combobox.md +3 -3
- package/src/components/ui/confirm-dialog.md +5 -4
- package/src/components/ui/context-menu.md +3 -2
- package/src/components/ui/date-field.md +6 -1
- package/src/components/ui/date-picker.md +6 -3
- package/src/components/ui/dialog.md +14 -12
- package/src/components/ui/drawer.md +58 -0
- package/src/components/ui/dropdown-menu.md +16 -14
- package/src/components/ui/error-boundary-view.md +1 -1
- package/src/components/ui/field.md +2 -1
- package/src/components/ui/form.md +71 -0
- package/src/components/ui/grid.md +4 -3
- package/src/components/ui/icon-button.md +4 -1
- package/src/components/ui/input-group.md +49 -0
- package/src/components/ui/input-otp.md +56 -0
- package/src/components/ui/input.md +40 -0
- package/src/components/ui/inspector.md +47 -7
- package/src/components/ui/item.md +5 -3
- package/src/components/ui/kbd.md +30 -0
- package/src/components/ui/label.md +29 -0
- package/src/components/ui/list.md +2 -2
- package/src/components/ui/material.md +25 -12
- package/src/components/ui/menu-items.md +62 -0
- package/src/components/ui/menubar.md +58 -0
- package/src/components/ui/message-scroller-primitive.md +70 -0
- package/src/components/ui/message-scroller.md +89 -0
- package/src/components/ui/navigation-button-group.md +4 -3
- package/src/components/ui/navigation-menu.md +52 -0
- package/src/components/ui/number-input.md +8 -0
- package/src/components/ui/pagination.md +51 -0
- package/src/components/ui/panel.md +6 -0
- package/src/components/ui/popover.md +10 -7
- package/src/components/ui/progress.md +31 -0
- package/src/components/ui/radio-group.md +36 -0
- package/src/components/ui/resizable.md +2 -1
- package/src/components/ui/scroll-area.md +3 -1
- package/src/components/ui/search-field.md +6 -1
- package/src/components/ui/segmented-control.md +6 -1
- package/src/components/ui/separator.md +35 -0
- package/src/components/ui/sidebar.md +29 -6
- package/src/components/ui/skeleton.md +36 -0
- package/src/components/ui/slider.md +58 -0
- package/src/components/ui/spinner.md +41 -0
- package/src/components/ui/split-view.md +8 -4
- package/src/components/ui/switch.md +44 -0
- package/src/components/ui/table.md +7 -7
- package/src/components/ui/tabs.md +3 -1
- package/src/components/ui/textarea.md +41 -0
- package/src/components/ui/toggle-group.md +2 -2
- package/src/components/ui/toggle.md +9 -9
- package/src/components/ui/toolbar-controls.md +24 -12
- package/src/components/ui/toolbar.md +6 -6
- package/src/styles/index.css +298 -117
- package/src/tokens/contracts.ts +131 -0
- package/src/tokens/index.css +6 -0
- package/src/tokens/index.ts +23 -0
- package/src/tokens/macos-26/README.md +37 -0
- package/src/tokens/macos-26/aliases.css +53 -0
- package/src/tokens/macos-26/compatibility.css +7 -0
- package/src/tokens/macos-26/index.css +3 -0
- package/src/tokens/macos-26/source/provenance.generated.json +28 -0
- package/src/tokens/macos-26/source/sidebar.generated.css +29 -0
- package/src/tokens/macos-26/source.css +7 -0
- package/src/tokens/macos-26/web-adaptations.json +25 -0
- package/src/tokens/macos-26/web-adaptations.md +15 -0
- package/src/tokens/macos-27/accessibility.css +11 -0
- package/src/tokens/macos-27/aliases.css +304 -0
- package/src/tokens/macos-27/compatibility.css +212 -0
- package/src/tokens/macos-27/index.css +15 -0
- package/src/tokens/macos-27/recipes.css +23 -0
- package/src/tokens/macos-27/source/chrome.generated.css +338 -0
- package/src/tokens/macos-27/source/colors.generated.css +140 -0
- package/src/tokens/macos-27/source/context.generated.css +18 -0
- package/src/tokens/macos-27/source/controls.generated.css +764 -0
- package/src/tokens/macos-27/source/effects.generated.css +68 -0
- package/src/tokens/macos-27/source/kit.generated.css +50 -0
- package/src/tokens/macos-27/source/overlays-status.generated.css +931 -0
- package/src/tokens/macos-27/source/paint-styles.generated.css +81 -0
- package/src/tokens/macos-27/source/provenance.generated.json +62 -0
- package/src/tokens/macos-27/source/sizes.generated.css +385 -0
- package/src/tokens/macos-27/source/source.generated.json +554 -0
- package/src/tokens/macos-27/source/text-styles.generated.css +116 -0
- package/src/tokens/macos-27/source.css +17 -0
- package/src/tokens/macos-27/web-adaptations.css +98 -0
- package/src/tokens/macos-27/web-adaptations.json +163 -0
- package/src/tokens/macos-27/web-adaptations.md +117 -0
- package/src/tokens/moldable/brand.css +165 -0
- package/src/tokens/moldable/index.css +1 -0
- package/src/tokens/platform-contract.test.ts +294 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
export type UITheme = 'platform' | 'moldable'
|
|
2
|
+
|
|
3
|
+
export type UIPlatform = 'macos' | 'windows' | 'web'
|
|
4
|
+
|
|
5
|
+
export type UIPlatformVersion = string
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A component recipe can intentionally come from a different versioned
|
|
9
|
+
* platform source than the application's base platform pack.
|
|
10
|
+
*
|
|
11
|
+
* Public names describe the anatomy an app is choosing. The registry below
|
|
12
|
+
* records which immutable platform source defines each recipe.
|
|
13
|
+
*/
|
|
14
|
+
export type UISidebarStyle = 'platform' | 'floating' | 'edge-to-edge'
|
|
15
|
+
|
|
16
|
+
export type PlatformPackId = `${UIPlatform}-${string}`
|
|
17
|
+
|
|
18
|
+
export interface UIPlatformPack {
|
|
19
|
+
id: PlatformPackId
|
|
20
|
+
platform: UIPlatform
|
|
21
|
+
version: UIPlatformVersion
|
|
22
|
+
capabilities: {
|
|
23
|
+
nativeMaterials: boolean
|
|
24
|
+
nativeWindowChrome: boolean
|
|
25
|
+
overlayScrollbars: boolean
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export type UIAppearance = 'light' | 'dark' | 'system'
|
|
30
|
+
|
|
31
|
+
export type ResolvedUIAppearance = Exclude<UIAppearance, 'system'>
|
|
32
|
+
|
|
33
|
+
export type ControlSize = 'mini' | 'small' | 'medium' | 'large' | 'xl'
|
|
34
|
+
|
|
35
|
+
export type LayoutDensity = 'compact' | 'regular' | 'comfortable'
|
|
36
|
+
|
|
37
|
+
export type MaterialThickness =
|
|
38
|
+
| 'ultra-thick'
|
|
39
|
+
| 'thick'
|
|
40
|
+
| 'medium'
|
|
41
|
+
| 'thin'
|
|
42
|
+
| 'ultra-thin'
|
|
43
|
+
|
|
44
|
+
export type MaterialContext = 'content' | 'over-glass'
|
|
45
|
+
|
|
46
|
+
export type ContrastPreference = 'system' | 'standard' | 'increased'
|
|
47
|
+
|
|
48
|
+
export type TransparencyPreference = 'system' | 'standard' | 'reduced'
|
|
49
|
+
|
|
50
|
+
export type MotionPreference = 'system' | 'standard' | 'reduced'
|
|
51
|
+
|
|
52
|
+
export interface UIPreferences {
|
|
53
|
+
contrast?: ContrastPreference
|
|
54
|
+
transparency?: TransparencyPreference
|
|
55
|
+
motion?: MotionPreference
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export const CONTROL_SIZES = [
|
|
59
|
+
'mini',
|
|
60
|
+
'small',
|
|
61
|
+
'medium',
|
|
62
|
+
'large',
|
|
63
|
+
'xl',
|
|
64
|
+
] as const satisfies readonly ControlSize[]
|
|
65
|
+
|
|
66
|
+
export const MATERIAL_THICKNESSES = [
|
|
67
|
+
'ultra-thick',
|
|
68
|
+
'thick',
|
|
69
|
+
'medium',
|
|
70
|
+
'thin',
|
|
71
|
+
'ultra-thin',
|
|
72
|
+
] as const satisfies readonly MaterialThickness[]
|
|
73
|
+
|
|
74
|
+
export const SIDEBAR_STYLES = {
|
|
75
|
+
platform: {
|
|
76
|
+
id: 'platform',
|
|
77
|
+
sourcePlatform: null,
|
|
78
|
+
sourceVersion: null,
|
|
79
|
+
},
|
|
80
|
+
floating: {
|
|
81
|
+
id: 'floating',
|
|
82
|
+
sourcePlatform: 'macos',
|
|
83
|
+
sourceVersion: '26',
|
|
84
|
+
},
|
|
85
|
+
'edge-to-edge': {
|
|
86
|
+
id: 'edge-to-edge',
|
|
87
|
+
sourcePlatform: 'macos',
|
|
88
|
+
sourceVersion: '27',
|
|
89
|
+
},
|
|
90
|
+
} as const satisfies Record<
|
|
91
|
+
UISidebarStyle,
|
|
92
|
+
{
|
|
93
|
+
id: UISidebarStyle
|
|
94
|
+
sourcePlatform: UIPlatform | null
|
|
95
|
+
sourceVersion: UIPlatformVersion | null
|
|
96
|
+
}
|
|
97
|
+
>
|
|
98
|
+
|
|
99
|
+
export const PLATFORM_PACKS = {
|
|
100
|
+
'macos-27': {
|
|
101
|
+
id: 'macos-27',
|
|
102
|
+
platform: 'macos',
|
|
103
|
+
version: '27',
|
|
104
|
+
capabilities: {
|
|
105
|
+
nativeMaterials: true,
|
|
106
|
+
nativeWindowChrome: true,
|
|
107
|
+
overlayScrollbars: true,
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
'web-default': {
|
|
111
|
+
id: 'web-default',
|
|
112
|
+
platform: 'web',
|
|
113
|
+
version: 'default',
|
|
114
|
+
capabilities: {
|
|
115
|
+
nativeMaterials: false,
|
|
116
|
+
nativeWindowChrome: false,
|
|
117
|
+
overlayScrollbars: false,
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
} as const satisfies Record<string, UIPlatformPack>
|
|
121
|
+
|
|
122
|
+
export function resolvePlatformPack(
|
|
123
|
+
platform: UIPlatform,
|
|
124
|
+
version: UIPlatformVersion,
|
|
125
|
+
): UIPlatformPack {
|
|
126
|
+
const exact = Object.values(PLATFORM_PACKS).find(
|
|
127
|
+
(pack) => pack.platform === platform && pack.version === version,
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
return exact ?? PLATFORM_PACKS['web-default']
|
|
131
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export {
|
|
2
|
+
CONTROL_SIZES,
|
|
3
|
+
MATERIAL_THICKNESSES,
|
|
4
|
+
PLATFORM_PACKS,
|
|
5
|
+
SIDEBAR_STYLES,
|
|
6
|
+
resolvePlatformPack,
|
|
7
|
+
type ContrastPreference,
|
|
8
|
+
type ControlSize,
|
|
9
|
+
type LayoutDensity,
|
|
10
|
+
type MaterialContext,
|
|
11
|
+
type MaterialThickness,
|
|
12
|
+
type MotionPreference,
|
|
13
|
+
type PlatformPackId,
|
|
14
|
+
type ResolvedUIAppearance,
|
|
15
|
+
type TransparencyPreference,
|
|
16
|
+
type UIAppearance,
|
|
17
|
+
type UIPlatform,
|
|
18
|
+
type UIPlatformPack,
|
|
19
|
+
type UIPlatformVersion,
|
|
20
|
+
type UIPreferences,
|
|
21
|
+
type UISidebarStyle,
|
|
22
|
+
type UITheme,
|
|
23
|
+
} from './contracts'
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# macOS 26 source pack
|
|
2
|
+
|
|
3
|
+
This versioned source is separate from macOS 27 and does not correct or mutate
|
|
4
|
+
that pack. The initial coverage is the inset floating sidebar used by
|
|
5
|
+
Moldable.
|
|
6
|
+
|
|
7
|
+
## Source
|
|
8
|
+
|
|
9
|
+
- Source: macOS 26.
|
|
10
|
+
- Values only.
|
|
11
|
+
- No source artwork, symbols, vectors, image assets, or font files.
|
|
12
|
+
|
|
13
|
+
## Composition
|
|
14
|
+
|
|
15
|
+
Applications continue to select a base platform pack normally. A component
|
|
16
|
+
recipe can be selected independently:
|
|
17
|
+
|
|
18
|
+
```tsx
|
|
19
|
+
<ThemeProvider
|
|
20
|
+
platform="macos"
|
|
21
|
+
platformVersion="27"
|
|
22
|
+
uiTheme="moldable"
|
|
23
|
+
sidebarStyle="floating"
|
|
24
|
+
/>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
This resolves the general UI from macOS 27 while resolving only the sidebar
|
|
28
|
+
geometry and effects from the immutable macOS 26 source.
|
|
29
|
+
|
|
30
|
+
Use `sidebarStyle="edge-to-edge"` for the macOS 27 anatomy, or
|
|
31
|
+
`sidebarStyle="platform"` to follow the selected base pack.
|
|
32
|
+
|
|
33
|
+
## Adaptations
|
|
34
|
+
|
|
35
|
+
Intentional web divergences use stable `M26-WEB-{AREA}-{NNN}` identifiers and
|
|
36
|
+
are documented in `web-adaptations.json` and `web-adaptations.md`. Source files
|
|
37
|
+
remain unchanged.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Stable component adapter for the macOS 26 floating sidebar.
|
|
3
|
+
*
|
|
4
|
+
* This selector is intentionally independent from the base platform/version
|
|
5
|
+
* selector so Moldable can use a macOS 27 base pack with macOS 26 sidebar
|
|
6
|
+
* anatomy.
|
|
7
|
+
*/
|
|
8
|
+
[data-ui-platform='macos'][data-ui-platform-version='26'],
|
|
9
|
+
[data-ui-sidebar-style='floating'] {
|
|
10
|
+
--m-ui-sidebar-width: var(--m26-source-sidebar-width-reference);
|
|
11
|
+
--m-ui-sidebar-window-inset: var(--m26-source-sidebar-window-inset);
|
|
12
|
+
--m-ui-sidebar-shell-radius: var(--m26-source-sidebar-radius-shell);
|
|
13
|
+
--m-ui-sidebar-item-radius: var(--m26-source-sidebar-radius-item);
|
|
14
|
+
--m-ui-sidebar-selection-radius: var(--m26-source-sidebar-radius-selection);
|
|
15
|
+
--m-ui-sidebar-corner-smoothing: var(--m26-source-sidebar-corner-smoothing);
|
|
16
|
+
--m-ui-sidebar-border-width: var(--m26-source-sidebar-border-width);
|
|
17
|
+
--m-ui-sidebar-divider-width: 0px;
|
|
18
|
+
--m-ui-sidebar-divider-color: transparent;
|
|
19
|
+
--m-ui-sidebar-shadow: var(--m26-source-sidebar-shadow);
|
|
20
|
+
--m-ui-sidebar-glass-effect-radius: var(
|
|
21
|
+
--m26-source-sidebar-glass-effect-radius
|
|
22
|
+
);
|
|
23
|
+
--m-ui-sidebar-padding-block: var(--m26-source-sidebar-padding-block);
|
|
24
|
+
--m-ui-sidebar-row-inset-inline: var(--m26-source-sidebar-row-inset-inline);
|
|
25
|
+
--m-ui-sidebar-row-height-small: var(--m26-source-sidebar-row-height-small);
|
|
26
|
+
--m-ui-sidebar-row-height-medium: var(--m26-source-sidebar-row-height-medium);
|
|
27
|
+
--m-ui-sidebar-row-height-large: var(--m26-source-sidebar-row-height-large);
|
|
28
|
+
--m-ui-sidebar-section-height-small: var(
|
|
29
|
+
--m26-source-sidebar-section-height-small
|
|
30
|
+
);
|
|
31
|
+
--m-ui-sidebar-section-height-medium: var(
|
|
32
|
+
--m26-source-sidebar-section-height-medium
|
|
33
|
+
);
|
|
34
|
+
--m-ui-sidebar-section-height-large: var(
|
|
35
|
+
--m26-source-sidebar-section-height-large
|
|
36
|
+
);
|
|
37
|
+
--m-ui-sidebar-selection-fill: var(--m26-source-sidebar-selection-light);
|
|
38
|
+
--m-ui-sidebar-material-fill: var(--m-ui-material-medium-fill);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/*
|
|
42
|
+
* @m26-divergence M26-WEB-COLOR-001
|
|
43
|
+
* The extracted light selection uses Multiply. Browser compositing the whole
|
|
44
|
+
* row with mix-blend-mode also blends its text and icons, so dark appearance
|
|
45
|
+
* uses a semantic alpha fill derived from the resolved platform text color.
|
|
46
|
+
*/
|
|
47
|
+
[data-ui-sidebar-style='floating'][data-ui-appearance='dark'] {
|
|
48
|
+
--m-ui-sidebar-selection-fill: color-mix(
|
|
49
|
+
in srgb,
|
|
50
|
+
var(--m-ui-color-text-primary) 10%,
|
|
51
|
+
transparent
|
|
52
|
+
);
|
|
53
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
[data-ui-platform='macos'][data-ui-platform-version='26'],
|
|
2
|
+
[data-ui-sidebar-style='floating'] {
|
|
3
|
+
--sidebar: var(--m-ui-sidebar-material-fill);
|
|
4
|
+
--sidebar-accent: var(--m-ui-sidebar-selection-fill);
|
|
5
|
+
--density-row-height: var(--m-ui-sidebar-row-height-medium);
|
|
6
|
+
--material-shadow-sidebar: var(--m-ui-sidebar-shadow);
|
|
7
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"source": "macOS 26",
|
|
3
|
+
"schemaVersion": 1,
|
|
4
|
+
"scope": {
|
|
5
|
+
"platform": "macos",
|
|
6
|
+
"platformVersion": "26",
|
|
7
|
+
"publicTheme": false,
|
|
8
|
+
"immutableSourcePack": true
|
|
9
|
+
},
|
|
10
|
+
"coverage": ["floating-sidebar"],
|
|
11
|
+
"inventory": {
|
|
12
|
+
"variables": {
|
|
13
|
+
"total": 19,
|
|
14
|
+
"byType": {
|
|
15
|
+
"COLOR": 1,
|
|
16
|
+
"DIMENSION": 15,
|
|
17
|
+
"EFFECT": 1,
|
|
18
|
+
"PERCENT": 1,
|
|
19
|
+
"STRING": 1
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"notes": [
|
|
24
|
+
"This initial source module covers the macOS 26 floating sidebar only.",
|
|
25
|
+
"It can be selected independently from the application's base platform pack.",
|
|
26
|
+
"No source artwork, symbols, vectors, image assets, or font files are included."
|
|
27
|
+
]
|
|
28
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Generated from the macOS 26 sidebar source specification.
|
|
3
|
+
* Values only. No source artwork, symbols, vectors, or image assets.
|
|
4
|
+
*
|
|
5
|
+
* The second selector exposes this immutable source to applications that
|
|
6
|
+
* deliberately compose the macOS 26 sidebar with another base platform pack.
|
|
7
|
+
*/
|
|
8
|
+
[data-ui-platform='macos'][data-ui-platform-version='26'],
|
|
9
|
+
[data-ui-sidebar-style='floating'] {
|
|
10
|
+
--m26-source-sidebar-width-reference: 240px;
|
|
11
|
+
--m26-source-sidebar-window-inset: 8px;
|
|
12
|
+
--m26-source-sidebar-radius-shell: 18px;
|
|
13
|
+
--m26-source-sidebar-radius-item: 5px;
|
|
14
|
+
--m26-source-sidebar-radius-selection: 8px;
|
|
15
|
+
--m26-source-sidebar-corner-smoothing: 60%;
|
|
16
|
+
--m26-source-sidebar-shadow: 0 8px 40px rgb(0 0 0 / 12%);
|
|
17
|
+
--m26-source-sidebar-glass-effect-radius: 12px;
|
|
18
|
+
--m26-source-sidebar-border-width: 0px;
|
|
19
|
+
--m26-source-sidebar-padding-block: 10px;
|
|
20
|
+
--m26-source-sidebar-row-inset-inline: 10px;
|
|
21
|
+
--m26-source-sidebar-row-height-small: 24px;
|
|
22
|
+
--m26-source-sidebar-row-height-medium: 32px;
|
|
23
|
+
--m26-source-sidebar-row-height-large: 40px;
|
|
24
|
+
--m26-source-sidebar-section-height-small: 34px;
|
|
25
|
+
--m26-source-sidebar-section-height-medium: 39px;
|
|
26
|
+
--m26-source-sidebar-section-height-large: 43px;
|
|
27
|
+
--m26-source-sidebar-selection-light: rgb(0 0 0 / 11%);
|
|
28
|
+
--m26-source-sidebar-selection-blend-mode: multiply;
|
|
29
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"source": "macOS 26",
|
|
3
|
+
"target": "web",
|
|
4
|
+
"schemaVersion": 1,
|
|
5
|
+
"idConvention": "M26-WEB-{AREA}-{NNN}",
|
|
6
|
+
"adaptations": [
|
|
7
|
+
{
|
|
8
|
+
"id": "M26-WEB-COLOR-001",
|
|
9
|
+
"area": "color",
|
|
10
|
+
"status": "intentional-divergence",
|
|
11
|
+
"summary": "Use a semantic alpha selection fill in dark appearance.",
|
|
12
|
+
"reason": "The extracted light selection uses Multiply. Applying mix-blend-mode to a browser row would also blend its text and icons, and a dark source selection value has not yet been added to this partial source module.",
|
|
13
|
+
"sourceBehavior": "An 11% black selection fill composited with Multiply in light appearance.",
|
|
14
|
+
"webBehavior": "The source fill remains exact in light appearance; dark appearance derives a 10% alpha fill from the resolved platform text color.",
|
|
15
|
+
"overrides": [
|
|
16
|
+
{
|
|
17
|
+
"appearance": "dark",
|
|
18
|
+
"token": "--m-ui-sidebar-selection-fill",
|
|
19
|
+
"sourceValue": "not-present-in-partial-source",
|
|
20
|
+
"adaptedValue": "color-mix(in srgb, var(--m-ui-color-text-primary) 10%, transparent)"
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# macOS 26 web adaptations
|
|
2
|
+
|
|
3
|
+
The immutable macOS 26 values live in `source/`. Effective browser behavior is
|
|
4
|
+
kept in the adapter layer and identified with stable `M26-WEB-*` IDs.
|
|
5
|
+
|
|
6
|
+
## M26-WEB-COLOR-001
|
|
7
|
+
|
|
8
|
+
The currently extracted sidebar selection is the light-appearance value:
|
|
9
|
+
11% black composited with Multiply. Applying `mix-blend-mode` to the entire
|
|
10
|
+
browser row also blends its label and icon, so the light value remains exact
|
|
11
|
+
while dark appearance uses a semantic 10% alpha fill derived from the resolved
|
|
12
|
+
platform text color.
|
|
13
|
+
|
|
14
|
+
When a dark macOS 26 source selection is added, this adaptation should be
|
|
15
|
+
re-evaluated rather than silently replacing the source.
|