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.
Files changed (155) hide show
  1. package/README.md +96 -0
  2. package/dist/ember-design-system.css +2 -0
  3. package/dist/favicon.svg +1 -0
  4. package/dist/index.js +5441 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/src/lib/components/editorial/ArticleHeader/ArticleHeader.d.ts +10 -0
  7. package/dist/src/lib/components/editorial/ArticleHeader/index.d.ts +2 -0
  8. package/dist/src/lib/components/editorial/AuthorByline/AuthorByline.d.ts +9 -0
  9. package/dist/src/lib/components/editorial/AuthorByline/index.d.ts +2 -0
  10. package/dist/src/lib/components/editorial/CodeBlock/CodeBlock.d.ts +11 -0
  11. package/dist/src/lib/components/editorial/CodeBlock/index.d.ts +2 -0
  12. package/dist/src/lib/components/editorial/Footnote/Footnote.d.ts +6 -0
  13. package/dist/src/lib/components/editorial/Footnote/index.d.ts +2 -0
  14. package/dist/src/lib/components/editorial/MarginNote/MarginNote.d.ts +7 -0
  15. package/dist/src/lib/components/editorial/MarginNote/index.d.ts +2 -0
  16. package/dist/src/lib/components/editorial/PullQuote/PullQuote.d.ts +6 -0
  17. package/dist/src/lib/components/editorial/PullQuote/index.d.ts +2 -0
  18. package/dist/src/lib/components/editorial/ReadingProgress/ReadingProgress.d.ts +5 -0
  19. package/dist/src/lib/components/editorial/ReadingProgress/index.d.ts +2 -0
  20. package/dist/src/lib/components/editorial/TagCloud/TagCloud.d.ts +10 -0
  21. package/dist/src/lib/components/editorial/TagCloud/index.d.ts +2 -0
  22. package/dist/src/lib/components/layout/AspectRatio/AspectRatio.d.ts +6 -0
  23. package/dist/src/lib/components/layout/AspectRatio/index.d.ts +2 -0
  24. package/dist/src/lib/components/layout/Box/Box.d.ts +43 -0
  25. package/dist/src/lib/components/layout/Box/index.d.ts +2 -0
  26. package/dist/src/lib/components/layout/Flex/Flex.d.ts +9 -0
  27. package/dist/src/lib/components/layout/Flex/index.d.ts +2 -0
  28. package/dist/src/lib/components/layout/Grid/Grid.d.ts +4 -0
  29. package/dist/src/lib/components/layout/Grid/index.d.ts +2 -0
  30. package/dist/src/lib/components/layout/Inline/Inline.d.ts +4 -0
  31. package/dist/src/lib/components/layout/Inline/index.d.ts +2 -0
  32. package/dist/src/lib/components/layout/Stack/Stack.d.ts +4 -0
  33. package/dist/src/lib/components/layout/Stack/index.d.ts +2 -0
  34. package/dist/src/lib/components/patterns/Accordion/Accordion.d.ts +13 -0
  35. package/dist/src/lib/components/patterns/Accordion/index.d.ts +2 -0
  36. package/dist/src/lib/components/patterns/Alert/Alert.d.ts +10 -0
  37. package/dist/src/lib/components/patterns/Alert/index.d.ts +2 -0
  38. package/dist/src/lib/components/patterns/AlertDialog/AlertDialog.d.ts +39 -0
  39. package/dist/src/lib/components/patterns/AlertDialog/index.d.ts +2 -0
  40. package/dist/src/lib/components/patterns/Breadcrumb/Breadcrumb.d.ts +10 -0
  41. package/dist/src/lib/components/patterns/Breadcrumb/index.d.ts +2 -0
  42. package/dist/src/lib/components/patterns/Calendar/Calendar.d.ts +24 -0
  43. package/dist/src/lib/components/patterns/Calendar/index.d.ts +2 -0
  44. package/dist/src/lib/components/patterns/Card/Card.d.ts +14 -0
  45. package/dist/src/lib/components/patterns/Card/index.d.ts +2 -0
  46. package/dist/src/lib/components/patterns/Carousel/Carousel.d.ts +20 -0
  47. package/dist/src/lib/components/patterns/Carousel/index.d.ts +2 -0
  48. package/dist/src/lib/components/patterns/Collapsible/Collapsible.d.ts +29 -0
  49. package/dist/src/lib/components/patterns/Collapsible/index.d.ts +2 -0
  50. package/dist/src/lib/components/patterns/Combobox/Combobox.d.ts +31 -0
  51. package/dist/src/lib/components/patterns/Combobox/index.d.ts +2 -0
  52. package/dist/src/lib/components/patterns/Command/Command.d.ts +65 -0
  53. package/dist/src/lib/components/patterns/Command/index.d.ts +2 -0
  54. package/dist/src/lib/components/patterns/ContextMenu/ContextMenu.d.ts +42 -0
  55. package/dist/src/lib/components/patterns/ContextMenu/index.d.ts +2 -0
  56. package/dist/src/lib/components/patterns/DatePicker/DatePicker.d.ts +15 -0
  57. package/dist/src/lib/components/patterns/DatePicker/index.d.ts +2 -0
  58. package/dist/src/lib/components/patterns/Drawer/Drawer.d.ts +11 -0
  59. package/dist/src/lib/components/patterns/Drawer/index.d.ts +2 -0
  60. package/dist/src/lib/components/patterns/DropdownMenu/DropdownMenu.d.ts +53 -0
  61. package/dist/src/lib/components/patterns/DropdownMenu/index.d.ts +2 -0
  62. package/dist/src/lib/components/patterns/EmptyState/EmptyState.d.ts +8 -0
  63. package/dist/src/lib/components/patterns/EmptyState/index.d.ts +2 -0
  64. package/dist/src/lib/components/patterns/FormField/FormField.d.ts +10 -0
  65. package/dist/src/lib/components/patterns/FormField/index.d.ts +2 -0
  66. package/dist/src/lib/components/patterns/HoverCard/HoverCard.d.ts +41 -0
  67. package/dist/src/lib/components/patterns/HoverCard/index.d.ts +2 -0
  68. package/dist/src/lib/components/patterns/Menubar/Menubar.d.ts +49 -0
  69. package/dist/src/lib/components/patterns/Menubar/index.d.ts +2 -0
  70. package/dist/src/lib/components/patterns/Modal/Modal.d.ts +12 -0
  71. package/dist/src/lib/components/patterns/Modal/index.d.ts +2 -0
  72. package/dist/src/lib/components/patterns/Navigation/Navigation.d.ts +19 -0
  73. package/dist/src/lib/components/patterns/Navigation/index.d.ts +2 -0
  74. package/dist/src/lib/components/patterns/Pagination/Pagination.d.ts +8 -0
  75. package/dist/src/lib/components/patterns/Pagination/index.d.ts +2 -0
  76. package/dist/src/lib/components/patterns/Resizable/Resizable.d.ts +24 -0
  77. package/dist/src/lib/components/patterns/Resizable/index.d.ts +2 -0
  78. package/dist/src/lib/components/patterns/Table/Table.d.ts +7 -0
  79. package/dist/src/lib/components/patterns/Table/index.d.ts +1 -0
  80. package/dist/src/lib/components/patterns/Tabs/Tabs.d.ts +17 -0
  81. package/dist/src/lib/components/patterns/Tabs/index.d.ts +2 -0
  82. package/dist/src/lib/components/patterns/Toast/Toast.d.ts +18 -0
  83. package/dist/src/lib/components/patterns/Toast/index.d.ts +2 -0
  84. package/dist/src/lib/components/patterns/_menu/index.d.ts +2 -0
  85. package/dist/src/lib/components/patterns/_menu/menu-core.d.ts +89 -0
  86. package/dist/src/lib/components/patterns/_menu/menu.d.ts +47 -0
  87. package/dist/src/lib/components/primitives/Avatar/Avatar.d.ts +15 -0
  88. package/dist/src/lib/components/primitives/Avatar/index.d.ts +2 -0
  89. package/dist/src/lib/components/primitives/Badge/Badge.d.ts +10 -0
  90. package/dist/src/lib/components/primitives/Badge/index.d.ts +2 -0
  91. package/dist/src/lib/components/primitives/Button/Button.d.ts +16 -0
  92. package/dist/src/lib/components/primitives/Button/index.d.ts +2 -0
  93. package/dist/src/lib/components/primitives/Checkbox/Checkbox.d.ts +7 -0
  94. package/dist/src/lib/components/primitives/Checkbox/index.d.ts +2 -0
  95. package/dist/src/lib/components/primitives/Divider/Divider.d.ts +7 -0
  96. package/dist/src/lib/components/primitives/Divider/index.d.ts +2 -0
  97. package/dist/src/lib/components/primitives/Dot/Dot.d.ts +14 -0
  98. package/dist/src/lib/components/primitives/Dot/index.d.ts +2 -0
  99. package/dist/src/lib/components/primitives/IconButton/IconButton.d.ts +15 -0
  100. package/dist/src/lib/components/primitives/IconButton/index.d.ts +2 -0
  101. package/dist/src/lib/components/primitives/Image/Image.d.ts +11 -0
  102. package/dist/src/lib/components/primitives/Image/index.d.ts +2 -0
  103. package/dist/src/lib/components/primitives/Input/Input.d.ts +10 -0
  104. package/dist/src/lib/components/primitives/Input/index.d.ts +2 -0
  105. package/dist/src/lib/components/primitives/InputOTP/InputOTP.d.ts +22 -0
  106. package/dist/src/lib/components/primitives/InputOTP/index.d.ts +2 -0
  107. package/dist/src/lib/components/primitives/Kbd/Kbd.d.ts +12 -0
  108. package/dist/src/lib/components/primitives/Kbd/index.d.ts +3 -0
  109. package/dist/src/lib/components/primitives/Kbd/key-icons.d.ts +14 -0
  110. package/dist/src/lib/components/primitives/Label/Label.d.ts +7 -0
  111. package/dist/src/lib/components/primitives/Label/index.d.ts +2 -0
  112. package/dist/src/lib/components/primitives/Mark/Mark.d.ts +7 -0
  113. package/dist/src/lib/components/primitives/Mark/index.d.ts +2 -0
  114. package/dist/src/lib/components/primitives/Overline/Overline.d.ts +9 -0
  115. package/dist/src/lib/components/primitives/Overline/index.d.ts +2 -0
  116. package/dist/src/lib/components/primitives/Popover/Popover.d.ts +47 -0
  117. package/dist/src/lib/components/primitives/Popover/index.d.ts +2 -0
  118. package/dist/src/lib/components/primitives/Progress/Progress.d.ts +12 -0
  119. package/dist/src/lib/components/primitives/Progress/index.d.ts +2 -0
  120. package/dist/src/lib/components/primitives/Radio/Radio.d.ts +14 -0
  121. package/dist/src/lib/components/primitives/Radio/index.d.ts +2 -0
  122. package/dist/src/lib/components/primitives/ScrollArea/ScrollArea.d.ts +14 -0
  123. package/dist/src/lib/components/primitives/ScrollArea/index.d.ts +2 -0
  124. package/dist/src/lib/components/primitives/Select/Select.d.ts +25 -0
  125. package/dist/src/lib/components/primitives/Select/index.d.ts +2 -0
  126. package/dist/src/lib/components/primitives/Skeleton/Skeleton.d.ts +12 -0
  127. package/dist/src/lib/components/primitives/Skeleton/index.d.ts +2 -0
  128. package/dist/src/lib/components/primitives/Slider/Slider.d.ts +18 -0
  129. package/dist/src/lib/components/primitives/Slider/index.d.ts +2 -0
  130. package/dist/src/lib/components/primitives/Spinner/Spinner.d.ts +6 -0
  131. package/dist/src/lib/components/primitives/Spinner/index.d.ts +2 -0
  132. package/dist/src/lib/components/primitives/Switch/Switch.d.ts +7 -0
  133. package/dist/src/lib/components/primitives/Switch/index.d.ts +2 -0
  134. package/dist/src/lib/components/primitives/Tag/Tag.d.ts +7 -0
  135. package/dist/src/lib/components/primitives/Tag/index.d.ts +2 -0
  136. package/dist/src/lib/components/primitives/Text/Text.d.ts +31 -0
  137. package/dist/src/lib/components/primitives/Text/index.d.ts +2 -0
  138. package/dist/src/lib/components/primitives/Textarea/Textarea.d.ts +6 -0
  139. package/dist/src/lib/components/primitives/Textarea/index.d.ts +2 -0
  140. package/dist/src/lib/components/primitives/Toggle/Toggle.d.ts +14 -0
  141. package/dist/src/lib/components/primitives/Toggle/index.d.ts +2 -0
  142. package/dist/src/lib/components/primitives/ToggleGroup/ToggleGroup.d.ts +29 -0
  143. package/dist/src/lib/components/primitives/ToggleGroup/index.d.ts +2 -0
  144. package/dist/src/lib/components/primitives/Tooltip/Tooltip.d.ts +9 -0
  145. package/dist/src/lib/components/primitives/Tooltip/index.d.ts +2 -0
  146. package/dist/src/lib/hooks/useTheme.d.ts +6 -0
  147. package/dist/src/lib/index.d.ts +71 -0
  148. package/dist/src/lib/utils/cn.d.ts +2 -0
  149. package/dist/src/lib/utils/space.d.ts +12 -0
  150. package/dist/src/lib/utils/url.d.ts +1 -0
  151. package/dist/src/lib/utils/useControllableState.d.ts +14 -0
  152. package/dist/src/lib/utils/useDismiss.d.ts +16 -0
  153. package/dist/src/lib/utils/useFloating.d.ts +59 -0
  154. package/package.json +74 -0
  155. 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
+ }