ember-design-system 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +96 -0
- package/dist/ember-design-system.css +2 -0
- package/dist/favicon.svg +1 -0
- package/dist/index.js +5441 -0
- package/dist/index.js.map +1 -0
- package/dist/src/lib/components/editorial/ArticleHeader/ArticleHeader.d.ts +10 -0
- package/dist/src/lib/components/editorial/ArticleHeader/index.d.ts +2 -0
- package/dist/src/lib/components/editorial/AuthorByline/AuthorByline.d.ts +9 -0
- package/dist/src/lib/components/editorial/AuthorByline/index.d.ts +2 -0
- package/dist/src/lib/components/editorial/CodeBlock/CodeBlock.d.ts +11 -0
- package/dist/src/lib/components/editorial/CodeBlock/index.d.ts +2 -0
- package/dist/src/lib/components/editorial/Footnote/Footnote.d.ts +6 -0
- package/dist/src/lib/components/editorial/Footnote/index.d.ts +2 -0
- package/dist/src/lib/components/editorial/MarginNote/MarginNote.d.ts +7 -0
- package/dist/src/lib/components/editorial/MarginNote/index.d.ts +2 -0
- package/dist/src/lib/components/editorial/PullQuote/PullQuote.d.ts +6 -0
- package/dist/src/lib/components/editorial/PullQuote/index.d.ts +2 -0
- package/dist/src/lib/components/editorial/ReadingProgress/ReadingProgress.d.ts +5 -0
- package/dist/src/lib/components/editorial/ReadingProgress/index.d.ts +2 -0
- package/dist/src/lib/components/editorial/TagCloud/TagCloud.d.ts +10 -0
- package/dist/src/lib/components/editorial/TagCloud/index.d.ts +2 -0
- package/dist/src/lib/components/layout/AspectRatio/AspectRatio.d.ts +6 -0
- package/dist/src/lib/components/layout/AspectRatio/index.d.ts +2 -0
- package/dist/src/lib/components/layout/Box/Box.d.ts +43 -0
- package/dist/src/lib/components/layout/Box/index.d.ts +2 -0
- package/dist/src/lib/components/layout/Flex/Flex.d.ts +9 -0
- package/dist/src/lib/components/layout/Flex/index.d.ts +2 -0
- package/dist/src/lib/components/layout/Grid/Grid.d.ts +4 -0
- package/dist/src/lib/components/layout/Grid/index.d.ts +2 -0
- package/dist/src/lib/components/layout/Inline/Inline.d.ts +4 -0
- package/dist/src/lib/components/layout/Inline/index.d.ts +2 -0
- package/dist/src/lib/components/layout/Stack/Stack.d.ts +4 -0
- package/dist/src/lib/components/layout/Stack/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/Accordion/Accordion.d.ts +13 -0
- package/dist/src/lib/components/patterns/Accordion/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/Alert/Alert.d.ts +10 -0
- package/dist/src/lib/components/patterns/Alert/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/AlertDialog/AlertDialog.d.ts +39 -0
- package/dist/src/lib/components/patterns/AlertDialog/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/Breadcrumb/Breadcrumb.d.ts +10 -0
- package/dist/src/lib/components/patterns/Breadcrumb/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/Calendar/Calendar.d.ts +24 -0
- package/dist/src/lib/components/patterns/Calendar/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/Card/Card.d.ts +14 -0
- package/dist/src/lib/components/patterns/Card/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/Carousel/Carousel.d.ts +20 -0
- package/dist/src/lib/components/patterns/Carousel/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/Collapsible/Collapsible.d.ts +29 -0
- package/dist/src/lib/components/patterns/Collapsible/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/Combobox/Combobox.d.ts +31 -0
- package/dist/src/lib/components/patterns/Combobox/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/Command/Command.d.ts +65 -0
- package/dist/src/lib/components/patterns/Command/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/ContextMenu/ContextMenu.d.ts +42 -0
- package/dist/src/lib/components/patterns/ContextMenu/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/DatePicker/DatePicker.d.ts +15 -0
- package/dist/src/lib/components/patterns/DatePicker/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/Drawer/Drawer.d.ts +11 -0
- package/dist/src/lib/components/patterns/Drawer/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/DropdownMenu/DropdownMenu.d.ts +53 -0
- package/dist/src/lib/components/patterns/DropdownMenu/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/EmptyState/EmptyState.d.ts +8 -0
- package/dist/src/lib/components/patterns/EmptyState/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/FormField/FormField.d.ts +10 -0
- package/dist/src/lib/components/patterns/FormField/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/HoverCard/HoverCard.d.ts +41 -0
- package/dist/src/lib/components/patterns/HoverCard/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/Menubar/Menubar.d.ts +49 -0
- package/dist/src/lib/components/patterns/Menubar/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/Modal/Modal.d.ts +12 -0
- package/dist/src/lib/components/patterns/Modal/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/Navigation/Navigation.d.ts +19 -0
- package/dist/src/lib/components/patterns/Navigation/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/Pagination/Pagination.d.ts +8 -0
- package/dist/src/lib/components/patterns/Pagination/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/Resizable/Resizable.d.ts +24 -0
- package/dist/src/lib/components/patterns/Resizable/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/Table/Table.d.ts +7 -0
- package/dist/src/lib/components/patterns/Table/index.d.ts +1 -0
- package/dist/src/lib/components/patterns/Tabs/Tabs.d.ts +17 -0
- package/dist/src/lib/components/patterns/Tabs/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/Toast/Toast.d.ts +18 -0
- package/dist/src/lib/components/patterns/Toast/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/_menu/index.d.ts +2 -0
- package/dist/src/lib/components/patterns/_menu/menu-core.d.ts +89 -0
- package/dist/src/lib/components/patterns/_menu/menu.d.ts +47 -0
- package/dist/src/lib/components/primitives/Avatar/Avatar.d.ts +15 -0
- package/dist/src/lib/components/primitives/Avatar/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Badge/Badge.d.ts +10 -0
- package/dist/src/lib/components/primitives/Badge/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Button/Button.d.ts +16 -0
- package/dist/src/lib/components/primitives/Button/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Checkbox/Checkbox.d.ts +7 -0
- package/dist/src/lib/components/primitives/Checkbox/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Divider/Divider.d.ts +7 -0
- package/dist/src/lib/components/primitives/Divider/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Dot/Dot.d.ts +14 -0
- package/dist/src/lib/components/primitives/Dot/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/IconButton/IconButton.d.ts +15 -0
- package/dist/src/lib/components/primitives/IconButton/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Image/Image.d.ts +11 -0
- package/dist/src/lib/components/primitives/Image/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Input/Input.d.ts +10 -0
- package/dist/src/lib/components/primitives/Input/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/InputOTP/InputOTP.d.ts +22 -0
- package/dist/src/lib/components/primitives/InputOTP/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Kbd/Kbd.d.ts +12 -0
- package/dist/src/lib/components/primitives/Kbd/index.d.ts +3 -0
- package/dist/src/lib/components/primitives/Kbd/key-icons.d.ts +14 -0
- package/dist/src/lib/components/primitives/Label/Label.d.ts +7 -0
- package/dist/src/lib/components/primitives/Label/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Mark/Mark.d.ts +7 -0
- package/dist/src/lib/components/primitives/Mark/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Overline/Overline.d.ts +9 -0
- package/dist/src/lib/components/primitives/Overline/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Popover/Popover.d.ts +47 -0
- package/dist/src/lib/components/primitives/Popover/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Progress/Progress.d.ts +12 -0
- package/dist/src/lib/components/primitives/Progress/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Radio/Radio.d.ts +14 -0
- package/dist/src/lib/components/primitives/Radio/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/ScrollArea/ScrollArea.d.ts +14 -0
- package/dist/src/lib/components/primitives/ScrollArea/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Select/Select.d.ts +25 -0
- package/dist/src/lib/components/primitives/Select/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Skeleton/Skeleton.d.ts +12 -0
- package/dist/src/lib/components/primitives/Skeleton/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Slider/Slider.d.ts +18 -0
- package/dist/src/lib/components/primitives/Slider/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Spinner/Spinner.d.ts +6 -0
- package/dist/src/lib/components/primitives/Spinner/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Switch/Switch.d.ts +7 -0
- package/dist/src/lib/components/primitives/Switch/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Tag/Tag.d.ts +7 -0
- package/dist/src/lib/components/primitives/Tag/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Text/Text.d.ts +31 -0
- package/dist/src/lib/components/primitives/Text/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Textarea/Textarea.d.ts +6 -0
- package/dist/src/lib/components/primitives/Textarea/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Toggle/Toggle.d.ts +14 -0
- package/dist/src/lib/components/primitives/Toggle/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/ToggleGroup/ToggleGroup.d.ts +29 -0
- package/dist/src/lib/components/primitives/ToggleGroup/index.d.ts +2 -0
- package/dist/src/lib/components/primitives/Tooltip/Tooltip.d.ts +9 -0
- package/dist/src/lib/components/primitives/Tooltip/index.d.ts +2 -0
- package/dist/src/lib/hooks/useTheme.d.ts +6 -0
- package/dist/src/lib/index.d.ts +71 -0
- package/dist/src/lib/utils/cn.d.ts +2 -0
- package/dist/src/lib/utils/space.d.ts +12 -0
- package/dist/src/lib/utils/url.d.ts +1 -0
- package/dist/src/lib/utils/useControllableState.d.ts +14 -0
- package/dist/src/lib/utils/useDismiss.d.ts +16 -0
- package/dist/src/lib/utils/useFloating.d.ts +59 -0
- package/package.json +74 -0
- package/src/styles/tokens.css +162 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
export type Side = 'top' | 'right' | 'bottom' | 'left';
|
|
3
|
+
export type Align = 'start' | 'center' | 'end';
|
|
4
|
+
export type Placement = Side | `${Side}-${Align}`;
|
|
5
|
+
export interface FloatingOptions {
|
|
6
|
+
/** Preferred placement of the floating element relative to the anchor. */
|
|
7
|
+
placement?: Placement;
|
|
8
|
+
/** Gap in px between anchor and floating element along the main axis. */
|
|
9
|
+
offset?: number;
|
|
10
|
+
/** Flip to the opposite side when there is not enough room. */
|
|
11
|
+
flip?: boolean;
|
|
12
|
+
/** Shift along the cross axis to stay within the viewport. */
|
|
13
|
+
shift?: boolean;
|
|
14
|
+
/** Min distance in px from the viewport edge when flipping/shifting. */
|
|
15
|
+
padding?: number;
|
|
16
|
+
/** Match the floating element's width to the anchor width. */
|
|
17
|
+
matchWidth?: boolean;
|
|
18
|
+
/** Whether positioning is active (skip work when closed). */
|
|
19
|
+
open?: boolean;
|
|
20
|
+
/** Use an externally-owned anchor ref instead of the internal one. */
|
|
21
|
+
anchorRef?: RefObject<HTMLElement | null>;
|
|
22
|
+
}
|
|
23
|
+
export interface FloatingState {
|
|
24
|
+
x: number;
|
|
25
|
+
y: number;
|
|
26
|
+
placement: Placement;
|
|
27
|
+
side: Side;
|
|
28
|
+
align: Align;
|
|
29
|
+
/** Inline style to spread onto the floating element. */
|
|
30
|
+
style: {
|
|
31
|
+
position: 'fixed';
|
|
32
|
+
top: number;
|
|
33
|
+
left: number;
|
|
34
|
+
minWidth?: number;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Lightweight floating-element positioner. Computes a fixed-position offset for
|
|
39
|
+
* a floating element relative to an anchor, with optional flip and shift to
|
|
40
|
+
* keep it inside the viewport. Recomputes on scroll, resize, and content size
|
|
41
|
+
* changes. No external dependency — kept deliberately small to match the
|
|
42
|
+
* system's "no heavy deps" stance.
|
|
43
|
+
*/
|
|
44
|
+
export declare function useFloating(options?: FloatingOptions): {
|
|
45
|
+
update: () => void;
|
|
46
|
+
x?: number | undefined;
|
|
47
|
+
y?: number | undefined;
|
|
48
|
+
placement?: Placement | undefined;
|
|
49
|
+
side?: Side | undefined;
|
|
50
|
+
align?: Align | undefined;
|
|
51
|
+
style?: {
|
|
52
|
+
position: "fixed";
|
|
53
|
+
top: number;
|
|
54
|
+
left: number;
|
|
55
|
+
minWidth?: number;
|
|
56
|
+
} | undefined;
|
|
57
|
+
anchorRef: RefObject<HTMLElement | null>;
|
|
58
|
+
floatingRef: RefObject<HTMLElement | null>;
|
|
59
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ember-design-system",
|
|
3
|
+
"private": false,
|
|
4
|
+
"version": "0.2.3",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"description": "A tight, opinionated design system — warm neutrals, ember accent, dual-mode.",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"module": "./dist/index.js",
|
|
9
|
+
"types": "./dist/src/lib/index.d.ts",
|
|
10
|
+
"sideEffects": [
|
|
11
|
+
"**/*.css"
|
|
12
|
+
],
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"types": "./dist/src/lib/index.d.ts",
|
|
16
|
+
"import": "./dist/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./styles.css": "./dist/ember-design-system.css",
|
|
19
|
+
"./tokens.css": "./src/styles/tokens.css"
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist",
|
|
23
|
+
"src/styles/tokens.css"
|
|
24
|
+
],
|
|
25
|
+
"scripts": {
|
|
26
|
+
"dev": "vite",
|
|
27
|
+
"build": "vite build",
|
|
28
|
+
"build:app": "tsc -b && vite build --config vite.config.app.ts",
|
|
29
|
+
"build:vercel": "npm run build:app && storybook build --output-dir dist-app/storybook",
|
|
30
|
+
"lint": "eslint .",
|
|
31
|
+
"test": "vitest run",
|
|
32
|
+
"test:watch": "vitest",
|
|
33
|
+
"preview": "vite preview",
|
|
34
|
+
"storybook": "storybook dev -p 6006",
|
|
35
|
+
"build-storybook": "storybook build",
|
|
36
|
+
"prepare": "npm run build"
|
|
37
|
+
},
|
|
38
|
+
"peerDependencies": {
|
|
39
|
+
"react": ">=18",
|
|
40
|
+
"react-dom": ">=18"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"clsx": "^2.1.1",
|
|
44
|
+
"lucide-react": "^0.469.0",
|
|
45
|
+
"react-icons": "^5.6.0"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@eslint/js": "^10.0.1",
|
|
49
|
+
"@storybook/addon-a11y": "^10.3.6",
|
|
50
|
+
"@storybook/addon-docs": "^10.3.6",
|
|
51
|
+
"@storybook/addon-themes": "^10.3.6",
|
|
52
|
+
"@storybook/react-vite": "^10.3.6",
|
|
53
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
54
|
+
"@testing-library/react": "^16.3.2",
|
|
55
|
+
"@types/node": "^24.12.3",
|
|
56
|
+
"@types/react": "^19.2.14",
|
|
57
|
+
"@types/react-dom": "^19.2.3",
|
|
58
|
+
"@vitejs/plugin-react": "^6.0.1",
|
|
59
|
+
"eslint": "^10.3.0",
|
|
60
|
+
"eslint-plugin-react-hooks": "^7.1.1",
|
|
61
|
+
"eslint-plugin-react-refresh": "^0.5.2",
|
|
62
|
+
"globals": "^17.6.0",
|
|
63
|
+
"jsdom": "^29.1.1",
|
|
64
|
+
"react": "^19.2.6",
|
|
65
|
+
"react-dom": "^19.2.6",
|
|
66
|
+
"react-router-dom": "^7.1.1",
|
|
67
|
+
"storybook": "^10.3.6",
|
|
68
|
+
"typescript": "~6.0.2",
|
|
69
|
+
"typescript-eslint": "^8.59.2",
|
|
70
|
+
"vite": "^8.0.12",
|
|
71
|
+
"vite-plugin-dts": "^4.5.4",
|
|
72
|
+
"vitest": "^4.1.7"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/* Design tokens — single source of truth. Mode-aware via [data-theme]. */
|
|
2
|
+
|
|
3
|
+
:root,
|
|
4
|
+
[data-theme='light'] {
|
|
5
|
+
/* Surfaces */
|
|
6
|
+
--bg-canvas: #faf9f6;
|
|
7
|
+
--bg-surface: #ffffff;
|
|
8
|
+
--bg-subtle: #f3f1ec;
|
|
9
|
+
--bg-muted: #e8e5de;
|
|
10
|
+
|
|
11
|
+
/* Borders */
|
|
12
|
+
--border-subtle: #e8e5de;
|
|
13
|
+
--border-default: #d4cfc4;
|
|
14
|
+
--border-strong: #9c968a;
|
|
15
|
+
|
|
16
|
+
/* Text */
|
|
17
|
+
--text-primary: #161513;
|
|
18
|
+
--text-secondary: #5c5853;
|
|
19
|
+
--text-tertiary: #8b867d;
|
|
20
|
+
--text-disabled: #bab3a6;
|
|
21
|
+
--text-inverse: #faf9f6;
|
|
22
|
+
|
|
23
|
+
/* Accent — Ember */
|
|
24
|
+
--accent-ember-50: #fff4ec;
|
|
25
|
+
--accent-ember-100: #ffe3cc;
|
|
26
|
+
--accent-ember-500: #d9541a;
|
|
27
|
+
--accent-ember-600: #b8410d;
|
|
28
|
+
--accent-ember-700: #8f3309;
|
|
29
|
+
|
|
30
|
+
/* Semantic */
|
|
31
|
+
--status-success: #2f7d4f;
|
|
32
|
+
--status-warning: #b5811a;
|
|
33
|
+
--status-danger: #b53a2c;
|
|
34
|
+
--status-info: #2d6bae;
|
|
35
|
+
|
|
36
|
+
/* Shadows */
|
|
37
|
+
--shadow-sm: 0 1px 2px rgba(20, 18, 14, 0.06);
|
|
38
|
+
--shadow-md: 0 6px 24px -4px rgba(20, 18, 14, 0.1);
|
|
39
|
+
|
|
40
|
+
/* Focus ring */
|
|
41
|
+
--focus-ring: 0 0 0 2px var(--bg-canvas), 0 0 0 4px var(--accent-ember-500);
|
|
42
|
+
|
|
43
|
+
color-scheme: light;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
[data-theme='dark'] {
|
|
47
|
+
--bg-canvas: #0f0f0e;
|
|
48
|
+
--bg-surface: #181816;
|
|
49
|
+
--bg-subtle: #1f1f1d;
|
|
50
|
+
--bg-muted: #2a2a27;
|
|
51
|
+
|
|
52
|
+
--border-subtle: #2a2a27;
|
|
53
|
+
--border-default: #3a3a36;
|
|
54
|
+
--border-strong: #5c5c57;
|
|
55
|
+
|
|
56
|
+
--text-primary: #f2efe8;
|
|
57
|
+
--text-secondary: #a8a39a;
|
|
58
|
+
--text-tertiary: #7a756d;
|
|
59
|
+
--text-disabled: #4a4742;
|
|
60
|
+
--text-inverse: #0f0f0e;
|
|
61
|
+
|
|
62
|
+
--accent-ember-50: #2a1810;
|
|
63
|
+
--accent-ember-100: #3d2418;
|
|
64
|
+
--accent-ember-500: #e86b2e;
|
|
65
|
+
--accent-ember-600: #f58247;
|
|
66
|
+
--accent-ember-700: #ff9663;
|
|
67
|
+
|
|
68
|
+
--status-success: #52c77e;
|
|
69
|
+
--status-warning: #e5b547;
|
|
70
|
+
--status-danger: #e56657;
|
|
71
|
+
--status-info: #5599dd;
|
|
72
|
+
|
|
73
|
+
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);
|
|
74
|
+
--shadow-md: 0 8px 32px -4px rgba(0, 0, 0, 0.5);
|
|
75
|
+
|
|
76
|
+
--focus-ring: 0 0 0 2px var(--bg-canvas), 0 0 0 4px var(--accent-ember-500);
|
|
77
|
+
|
|
78
|
+
color-scheme: dark;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
:root {
|
|
82
|
+
/* Spacing */
|
|
83
|
+
--space-0: 0;
|
|
84
|
+
--space-1: 4px;
|
|
85
|
+
--space-2: 8px;
|
|
86
|
+
--space-3: 12px;
|
|
87
|
+
--space-4: 16px;
|
|
88
|
+
--space-5: 24px;
|
|
89
|
+
--space-6: 32px;
|
|
90
|
+
--space-8: 48px;
|
|
91
|
+
--space-10: 64px;
|
|
92
|
+
--space-12: 96px;
|
|
93
|
+
--space-16: 144px;
|
|
94
|
+
|
|
95
|
+
/* Radius */
|
|
96
|
+
--radius-none: 0;
|
|
97
|
+
--radius-sm: 4px;
|
|
98
|
+
--radius-md: 6px;
|
|
99
|
+
--radius-lg: 10px;
|
|
100
|
+
--radius-pill: 999px;
|
|
101
|
+
|
|
102
|
+
/* Type scale (modular, base 16, ratio 1.250) */
|
|
103
|
+
--text-2xs: 11px;
|
|
104
|
+
--text-xs: 12px;
|
|
105
|
+
--text-sm: 14px;
|
|
106
|
+
--text-base: 16px;
|
|
107
|
+
--text-md: 18px;
|
|
108
|
+
--text-lg: 20px;
|
|
109
|
+
--text-xl: 24px;
|
|
110
|
+
--text-2xl: 30px;
|
|
111
|
+
--text-3xl: 38px;
|
|
112
|
+
--text-4xl: 48px;
|
|
113
|
+
--text-5xl: 60px;
|
|
114
|
+
--text-6xl: 76px;
|
|
115
|
+
|
|
116
|
+
/* Line heights */
|
|
117
|
+
--leading-tight: 1.05;
|
|
118
|
+
--leading-snug: 1.15;
|
|
119
|
+
--leading-base: 1.5;
|
|
120
|
+
--leading-relaxed: 1.65;
|
|
121
|
+
|
|
122
|
+
/* Font weights */
|
|
123
|
+
--font-regular: 400;
|
|
124
|
+
--font-medium: 500;
|
|
125
|
+
--font-semibold: 600;
|
|
126
|
+
--font-bold: 700;
|
|
127
|
+
|
|
128
|
+
/* Font families */
|
|
129
|
+
--font-sans: 'Inter', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
|
|
130
|
+
--font-serif: 'Source Serif 4', ui-serif, Georgia, 'Times New Roman', serif;
|
|
131
|
+
--font-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
|
|
132
|
+
--font-display: 'Inter', var(--font-sans);
|
|
133
|
+
|
|
134
|
+
/* Motion */
|
|
135
|
+
--duration-fast: 120ms;
|
|
136
|
+
--duration-base: 200ms;
|
|
137
|
+
--duration-slow: 320ms;
|
|
138
|
+
--easing-standard: cubic-bezier(0.2, 0, 0, 1);
|
|
139
|
+
--easing-decelerate: cubic-bezier(0, 0, 0.2, 1);
|
|
140
|
+
--easing-accelerate: cubic-bezier(0.4, 0, 1, 1);
|
|
141
|
+
--easing-spring: cubic-bezier(0.34, 1.4, 0.55, 1);
|
|
142
|
+
--easing-silk: cubic-bezier(0.16, 1, 0.3, 1);
|
|
143
|
+
|
|
144
|
+
/* Motion durations (added) */
|
|
145
|
+
--duration-xs: 80ms;
|
|
146
|
+
--duration-xl: 480ms;
|
|
147
|
+
|
|
148
|
+
/* Layout */
|
|
149
|
+
--content-max: 680px;
|
|
150
|
+
--content-wide: 880px;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
@media (prefers-reduced-motion: reduce) {
|
|
154
|
+
*,
|
|
155
|
+
*::before,
|
|
156
|
+
*::after {
|
|
157
|
+
animation-duration: 0.01ms !important;
|
|
158
|
+
animation-iteration-count: 1 !important;
|
|
159
|
+
transition-duration: 0.01ms !important;
|
|
160
|
+
scroll-behavior: auto !important;
|
|
161
|
+
}
|
|
162
|
+
}
|