@cosxai/ui 1.0.0-alpha.0 → 1.0.0-alpha.10

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 (80) hide show
  1. package/CHANGELOG.md +109 -0
  2. package/package.json +36 -6
  3. package/src/brand.css +13 -0
  4. package/src/components/ActionBar.tsx +607 -0
  5. package/src/components/ActivityTimeline.tsx +77 -0
  6. package/src/components/AsyncSelect.tsx +205 -0
  7. package/src/components/AuthLayout.tsx +127 -0
  8. package/src/components/Badge.tsx +68 -0
  9. package/src/components/BrandLoader.tsx +122 -0
  10. package/src/components/Breadcrumb.tsx +129 -0
  11. package/src/components/Button.tsx +186 -0
  12. package/src/components/Card.tsx +42 -0
  13. package/src/components/Checkbox.tsx +67 -0
  14. package/src/components/ChoiceCards.tsx +68 -0
  15. package/src/components/CodeInput.tsx +150 -0
  16. package/src/components/CommandPalette.tsx +228 -0
  17. package/src/components/ConfirmDialog.tsx +294 -0
  18. package/src/components/CopyField.tsx +104 -0
  19. package/src/components/DateInput.tsx +366 -0
  20. package/src/components/Dialog.tsx +135 -0
  21. package/src/components/Dropzone.tsx +187 -0
  22. package/src/components/Field.tsx +66 -0
  23. package/src/components/Figure.tsx +30 -0
  24. package/src/components/FileCard.tsx +233 -0
  25. package/src/components/FileRow.tsx +159 -0
  26. package/src/components/FolderTree.tsx +377 -0
  27. package/src/components/Icon.tsx +32 -0
  28. package/src/components/IconButton.tsx +55 -0
  29. package/src/components/Input.tsx +74 -0
  30. package/src/components/ListToolbar.tsx +177 -0
  31. package/src/components/Logo.tsx +62 -0
  32. package/src/components/Marker.tsx +26 -0
  33. package/src/components/MentionInput.tsx +233 -0
  34. package/src/components/Menu.tsx +109 -0
  35. package/src/components/MetaLabel.tsx +38 -0
  36. package/src/components/PageHeader.tsx +62 -0
  37. package/src/components/PageState.tsx +84 -0
  38. package/src/components/Progress.tsx +97 -0
  39. package/src/components/PulseDot.tsx +31 -0
  40. package/src/components/Radio.tsx +72 -0
  41. package/src/components/RecipientsInput.tsx +252 -0
  42. package/src/components/SearchField.tsx +137 -0
  43. package/src/components/SegmentedControl.tsx +95 -0
  44. package/src/components/Select.tsx +351 -0
  45. package/src/components/SidePanel.tsx +130 -0
  46. package/src/components/Skeleton.tsx +73 -0
  47. package/src/components/Spinner.tsx +20 -0
  48. package/src/components/StageProgress.tsx +51 -0
  49. package/src/components/Steps.tsx +58 -0
  50. package/src/components/Switch.tsx +67 -0
  51. package/src/components/SyncStatus.tsx +56 -0
  52. package/src/components/Table.tsx +196 -0
  53. package/src/components/Tabs.tsx +124 -0
  54. package/src/components/Tag.tsx +35 -0
  55. package/src/components/Textarea.tsx +46 -0
  56. package/src/components/ThemeProvider.tsx +80 -0
  57. package/src/components/ThemeSwitch.tsx +99 -0
  58. package/src/components/Toast.tsx +196 -0
  59. package/src/components/Tooltip.tsx +57 -0
  60. package/src/components/UploadCheck.tsx +118 -0
  61. package/src/components/UploadList.tsx +176 -0
  62. package/src/components/VirtualList.tsx +90 -0
  63. package/src/components/WindowDrop.tsx +131 -0
  64. package/src/components/WorkspaceRow.tsx +80 -0
  65. package/src/components/forms-control.ts +36 -0
  66. package/src/components/inputs-aria.ts +5 -0
  67. package/src/components/inputs-date.ts +92 -0
  68. package/src/components/inputs-listbox.tsx +154 -0
  69. package/src/components/inputs-search.ts +60 -0
  70. package/src/components/logo-art.ts +4 -0
  71. package/src/components/status-files.ts +124 -0
  72. package/src/components/status-motion.ts +30 -0
  73. package/src/components/useButtonAction.ts +57 -0
  74. package/src/components/useSelection.ts +142 -0
  75. package/src/index.ts +73 -2
  76. package/src/modes.css +10 -0
  77. package/src/styles.css +2 -0
  78. package/src/theme-base.css +123 -0
  79. package/src/theme-reset.css +14 -0
  80. package/src/theme.css +2 -114
package/src/index.ts CHANGED
@@ -2,7 +2,78 @@
2
2
  * @cosxai/ui 1.x — the COSX Design System 3.0 in React.
3
3
  *
4
4
  * Foundations: import "@cosxai/ui/styles.css" (tokens + fonts) and, in a
5
- * Tailwind v4 app, "@cosxai/ui/theme.css". Components arrive in the 1.0
6
- * alphas (docs/workdocs/2026-09-29_feature-ui-1.0).
5
+ * Tailwind v4 app, "@cosxai/ui/theme.css". Plan and status:
6
+ * docs/workdocs/2026-09-29_feature-ui-1.0.
7
7
  */
8
8
  export { cn } from './lib/cn';
9
+
10
+ export { Badge, type BadgeAppearance, type BadgeProps, type BadgeStatus } from './components/Badge';
11
+ export { Button, formatCount, type ButtonGround, type ButtonProps, type ButtonState, type ButtonVariant } from './components/Button';
12
+ export { Card, type CardProps } from './components/Card';
13
+ export { Figure, type FigureProps } from './components/Figure';
14
+ export { Icon, type IconProps } from './components/Icon';
15
+ export { IconButton, type IconButtonProps } from './components/IconButton';
16
+ export { Logo, type LogoProps } from './components/Logo';
17
+ export { Marker, type MarkerProps } from './components/Marker';
18
+ export { MetaLabel, type MetaLabelProps } from './components/MetaLabel';
19
+ export { Spinner, type SpinnerProps } from './components/Spinner';
20
+ export { BrandLoader, loaderState, type BrandLoaderProps } from './components/BrandLoader';
21
+ export { Tag, type TagProps } from './components/Tag';
22
+ export { ThemeProvider, useTheme, type ThemeMode, type ThemeProviderProps } from './components/ThemeProvider';
23
+ export { useButtonAction, type ButtonAction } from './components/useButtonAction';
24
+
25
+ export { Checkbox, type CheckboxProps } from './components/Checkbox';
26
+ export { Dialog, DialogClose, DialogContent, DialogTrigger, type DialogContentProps } from './components/Dialog';
27
+ export { Field, useField, type FieldContextValue, type FieldProps } from './components/Field';
28
+ export { Input, type InputProps } from './components/Input';
29
+ export { RadioGroup, type RadioGroupProps, type RadioOption } from './components/Radio';
30
+ export { Select, type SelectOption, type SelectProps } from './components/Select';
31
+ export { Switch, type SwitchProps } from './components/Switch';
32
+ export { Table, type TableColumn, type TableProps, type TableRowBase, type TableSort, type TableSortDirection } from './components/Table';
33
+ export { Tab, TabList, TabPanel, Tabs, type TabItem, type TabListProps, type TabPanelProps, type TabProps, type TabsProps, type TabsVariant } from './components/Tabs';
34
+ export { Textarea, type TextareaProps } from './components/Textarea';
35
+ export { ToastCard, Toaster, toast, type ToastCardProps, type ToasterProps, type ToastLabels, type ToastOptions, type ToastStatus } from './components/Toast';
36
+ export { Tooltip, TooltipProvider, type TooltipProps } from './components/Tooltip';
37
+
38
+ // Stage 2 — product patterns
39
+ export { ActionBar, ActionBarProvider, arrange, formatShortcut, useActionBarActivity, useActionBarHidden, useActionBarItems, useActionBarMode, useActionBarSelection, type ActionBarAction, type ActionBarLabels, type ActionBarMode, type ActionBarPresentation, type ActionBarProps, type ActionBarProviderProps, type ActionBarSelection, type ActionBarState } from './components/ActionBar';
40
+ export { ActivityTimeline, initialsOf, type ActivityEvent, type ActivityGroup, type ActivityTimelineProps } from './components/ActivityTimeline';
41
+ export { AsyncSelect, type AsyncSelectProps } from './components/AsyncSelect';
42
+ export { Breadcrumb, type BreadcrumbItem, type BreadcrumbProps } from './components/Breadcrumb';
43
+ export { ChoiceCards, type Choice, type ChoiceCardsProps } from './components/ChoiceCards';
44
+ export { CodeInput, type CodeInputProps } from './components/CodeInput';
45
+ export { CommandPalette, useCommandPaletteHotkey, type CommandItem, type CommandPaletteLabels, type CommandPaletteProps, type CommandSource } from './components/CommandPalette';
46
+ export { ConfirmDialog, PromptDialog, StepUpDialog, type ConfirmDialogProps, type PromptDialogProps, type StepUpDialogProps } from './components/ConfirmDialog';
47
+ export { CopyField, type CopyFieldProps } from './components/CopyField';
48
+ export { DateInput, FuzzyDateInput, type DateInputProps, type DatePrecision, type FuzzyDateInputProps } from './components/DateInput';
49
+ export { Dropzone, refusedText, type DropzoneLabels, type DropzoneProps } from './components/Dropzone';
50
+ export { FileCard, type FileCardProps, type FileCardState } from './components/FileCard';
51
+ export { FileList, FileRow, type FileListProps, type FileRowProps } from './components/FileRow';
52
+ export { FolderTree, type FolderTreeProps, type TreeNode } from './components/FolderTree';
53
+ export { type ListItem } from './components/inputs-listbox';
54
+ export { ListToolbar, type ListFilter, type ListToolbarLabels, type ListToolbarProps, type ListView, type SearchScope } from './components/ListToolbar';
55
+ export { MentionInput, mentionAt, type Mention, type MentionInputProps } from './components/MentionInput';
56
+ export { Menu, MenuCheckboxItem, MenuContent, MenuGroup, MenuItem, MenuSeparator, MenuSub, MenuSubContent, MenuSubTrigger, MenuTrigger, type MenuCheckboxItemProps, type MenuContentProps, type MenuItemProps, type MenuSubTriggerProps } from './components/Menu';
57
+ export { PageHeader, type PageHeaderFigure, type PageHeaderProps } from './components/PageHeader';
58
+ export { PageNotice, PageState, type PageNoticeProps, type PageStateKind, type PageStateProps } from './components/PageState';
59
+ export { Progress, progressStep, type ProgressProps, type ProgressSegment } from './components/Progress';
60
+ export { PulseDot, type PulseDotProps } from './components/PulseDot';
61
+ export { RecipientsInput, type Recipient, type RecipientStatus, type RecipientsInputProps } from './components/RecipientsInput';
62
+ export { SearchField, type SearchFieldProps } from './components/SearchField';
63
+ export { SegmentedControl, type Segment, type SegmentedControlProps } from './components/SegmentedControl';
64
+ export { SidePanel, SidePanelProvider, SidePanelSlot, useSidePanel, type SidePanelProps } from './components/SidePanel';
65
+ export { Skeleton, SkeletonCards, SkeletonList, SkeletonViewer, type SkeletonProps, type SkeletonViewerProps } from './components/Skeleton';
66
+ export { StageProgress, type Stage, type StageProgressProps } from './components/StageProgress';
67
+ export { checkFiles, formatBytes, hasFiles, readDataTransfer, type DroppedFile, type FileRules, type Rejected, type RejectReason } from './components/status-files';
68
+ export { Steps, type Step, type StepState, type StepsProps } from './components/Steps';
69
+ export { SyncStatus, type SyncState, type SyncStatusProps } from './components/SyncStatus';
70
+ export { UploadCheck, groupByFolder, type UploadCheckLabels, type UploadCheckProps } from './components/UploadCheck';
71
+ export { UploadFolderRow, UploadList, UploadRow, useBeforeUnloadWhile, type UploadItem, type UploadRowLabels, type UploadRowProps, type UploadState } from './components/UploadList';
72
+ export { useSelection, type Selection, type SelectionOptions } from './components/useSelection';
73
+ export { InfiniteLoader, VirtualList, type InfiniteLoaderProps, type VirtualListProps } from './components/VirtualList';
74
+ export { WindowDrop, useWindowDrop, type WindowDropProps } from './components/WindowDrop';
75
+
76
+ // Stage 3 — sign-in (Metaroom sign-in, design.cosx.co)
77
+ export { AuthIconTile, AuthLayout, AuthPanel, AuthStepHead, type AuthIconTileProps, type AuthLayoutProps, type AuthPanelProps, type AuthStepHeadProps } from './components/AuthLayout';
78
+ export { ThemeSwitch, type ThemeSwitchLabels, type ThemeSwitchProps } from './components/ThemeSwitch';
79
+ export { WorkspaceMark, WorkspaceRow, type WorkspaceMarkProps, type WorkspaceRowProps } from './components/WorkspaceRow';
package/src/modes.css ADDED
@@ -0,0 +1,10 @@
1
+ /* @cosxai/ui — ink mode, completed.
2
+ *
3
+ * 3.0 switches its colours on either data-mode="ink" (root) or .ink-mode
4
+ * (subtree) — colors.css — but its marker rules (typography.css,
5
+ * typography-cjk.css) only know .ink-mode. Same rules for data-mode, so a
6
+ * page in ink mode gets the ink marker: no band, the finding in accent
7
+ * yellow. Reported to the design system; drop this when 3.0 covers it.
8
+ */
9
+ [data-mode="ink"] .marker { color: var(--yellow-accent); background: none; padding: 0; margin: 0; border-radius: 0; }
10
+ [data-mode="ink"] :lang(zh) .marker, :lang(zh)[data-mode="ink"] .marker { background: none; }
package/src/styles.css CHANGED
@@ -14,4 +14,6 @@
14
14
  @import "./tokens/elevation.css";
15
15
  @import "./tokens/motion.css";
16
16
  @import "./tokens/compat.css";
17
+ @import "./brand.css";
18
+ @import "./modes.css";
17
19
  @import "./fonts.css";
@@ -0,0 +1,123 @@
1
+ /* @cosxai/ui — the design system's Tailwind utilities, without clearing
2
+ * Tailwind's own palette, sizes, radii, shadows, fonts and easings.
3
+ *
4
+ * For an app moving to the kit screen by screen (product-meta during the
5
+ * move): its existing classes keep working, and the kit's are added. Where
6
+ * both define a name (radius, font-sans, ease-in/out), the kit's value wins.
7
+ * New apps import theme.css, which is this plus the reset.
8
+ */
9
+ /* ink: — styles for ink mode (data-mode="ink" on <html>, or inside
10
+ .ink-mode). The semantic colours switch by themselves; this is for the
11
+ rules that flip on ink (the primary becomes the yellow). */
12
+ @custom-variant ink (&:where([data-mode="ink"], [data-mode="ink"] *, .ink-mode, .ink-mode *));
13
+
14
+ @theme inline {
15
+
16
+ /* Materials — fixed, do not switch with ink mode */
17
+ --color-paper: var(--paper);
18
+ --color-linen: var(--linen);
19
+ --color-sunk-2: var(--sunk-2);
20
+ --color-sunk-3: var(--sunk-3);
21
+ --color-ink: var(--ink);
22
+ --color-ink-raised: var(--ink-raised);
23
+ --color-grey: var(--grey);
24
+ --color-grey-inverse: var(--grey-inverse);
25
+
26
+ /* The yellow — one hue, by area */
27
+ --color-yellow: var(--yellow);
28
+ --color-yellow-accent: var(--yellow-accent);
29
+ --color-yellow-accent-hover: var(--yellow-accent-hover);
30
+ --color-yellow-light: var(--yellow-light);
31
+ --color-yellow-hover: var(--yellow-hover);
32
+ --color-yellow-1: var(--yellow-1);
33
+ --color-yellow-2: var(--yellow-2);
34
+ --color-yellow-3: var(--yellow-3);
35
+ --color-yellow-4: var(--yellow-4);
36
+ --color-yellow-5: var(--yellow-5);
37
+ --color-yellow-wash-12: var(--yellow-12);
38
+ --color-yellow-wash-20: var(--yellow-20);
39
+ --color-yellow-wash-32: var(--yellow-32);
40
+ --color-yellow-wash-50: var(--yellow-50);
41
+ --color-marker: var(--marker);
42
+
43
+ /* Semantic — switch with ink mode. Product code uses these. */
44
+ --color-page: var(--bg-page);
45
+ --color-sunk: var(--bg-sunk);
46
+ --color-well: var(--bg-well);
47
+ --color-chrome: var(--bg-chrome);
48
+ --color-field: var(--bg-field);
49
+ --color-fg: var(--text-primary);
50
+ --color-fg-secondary: var(--text-secondary);
51
+ --color-fg-label: var(--text-label);
52
+ --color-fg-on-yellow-secondary: var(--text-on-yellow-secondary);
53
+ --color-rule: var(--rule);
54
+ --color-rule-soft: var(--rule-soft);
55
+ --color-hover: var(--hover);
56
+ --color-scrim: var(--scrim);
57
+
58
+ /* Workspace brand (brand.css): the COSX yellow unless a customer's
59
+ colour is injected. Selection and grounds use field; dots and
60
+ progress use mark. Never for text. */
61
+ --color-brand-field: var(--brand-field);
62
+ --color-brand-mark: var(--brand-mark);
63
+
64
+ /* On an ink surface inside a paper page */
65
+ --color-inv: var(--inv-bg);
66
+ --color-inv-raised: var(--inv-bg-raised);
67
+ --color-inv-fg: var(--inv-text);
68
+ --color-inv-fg-secondary: var(--inv-text-secondary);
69
+ --color-inv-rule: var(--inv-rule);
70
+
71
+ /* Product status: yellow, ink and one red. Progress is an ink outline and
72
+ complete a grey dot — they take no colour of their own. */
73
+ --color-attention: var(--status-attention);
74
+ --color-attention-wash: var(--status-attention-wash);
75
+ --color-error: var(--status-error);
76
+ --color-error-text: var(--status-error-text);
77
+ --color-error-wash: var(--status-error-wash);
78
+
79
+ --color-transparent: transparent;
80
+ --color-current: currentColor;
81
+ --color-white: #fff;
82
+
83
+ /* Radius ladder — same names and values as 3.0 spacing.css */
84
+ --radius-xs: 4px;
85
+ --radius-sm: 6px;
86
+ --radius-md: 8px;
87
+ --radius-lg: 16px;
88
+ --radius-xl: 24px;
89
+ --radius-pill: 999px;
90
+
91
+ /* One family. Same stacks as fonts.css (the ones in effect): font-sans
92
+ for Latin, font-sans-cjk for Chinese pages (Geist for Latin and
93
+ figures, Noto Sans SC for hanzi). */
94
+ --font-sans: "Geist Variable", "Geist", "Helvetica Neue", Helvetica, Arial, sans-serif;
95
+ --font-sans-cjk: "Geist Variable", "Geist", "Noto Sans SC Variable", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
96
+
97
+ --font-weight-normal: 400;
98
+ --font-weight-medium: 500;
99
+ --font-weight-semibold: 600;
100
+ --font-weight-bold: 700;
101
+
102
+ /* Type scale (typography.css). Product UI body is 14px, content 15px. */
103
+ --text-meta: 12px;
104
+ --text-small: 13.5px;
105
+ --text-ui: 14px;
106
+ --text-body: 15px;
107
+ --text-h3: 18px;
108
+ --text-lede: 20px;
109
+ --text-title: 22px;
110
+ --text-figure: 32px;
111
+ --text-h2: var(--size-h2);
112
+ --text-h1: var(--size-h1);
113
+ --text-display: var(--size-display);
114
+
115
+ --tracking-display: -0.025em;
116
+ --tracking-heading: -0.015em;
117
+ --tracking-figure: -0.03em;
118
+
119
+ /* Motion — flat for state, ease-out for entry; nothing bounces */
120
+ --ease-standard: cubic-bezier(.2,0,.2,1);
121
+ --ease-out: cubic-bezier(.16,1,.3,1);
122
+ --ease-in: cubic-bezier(.4,0,1,1);
123
+ }
@@ -0,0 +1,14 @@
1
+ /* @cosxai/ui — clears Tailwind's defaults so only the design system's
2
+ * values exist (part of theme.css; see theme-base.css for incremental use). */
3
+ @theme {
4
+ --color-*: initial;
5
+ --radius-*: initial;
6
+ --shadow-*: initial;
7
+ --inset-shadow-*: initial;
8
+ --drop-shadow-*: initial;
9
+ --font-*: initial;
10
+ --ease-*: initial;
11
+ --text-*: initial;
12
+ --font-weight-*: initial;
13
+ --tracking-*: initial;
14
+ }
package/src/theme.css CHANGED
@@ -16,117 +16,5 @@
16
16
  * (theme.test.ts). In particular font sizes avoid --text-primary /
17
17
  * --text-secondary / --text-label, which are colours in 3.0.
18
18
  */
19
- @theme inline {
20
- --color-*: initial;
21
- --radius-*: initial;
22
- --shadow-*: initial;
23
- --inset-shadow-*: initial;
24
- --drop-shadow-*: initial;
25
- --font-*: initial;
26
- --ease-*: initial;
27
- --text-*: initial;
28
- --font-weight-*: initial;
29
- --tracking-*: initial;
30
-
31
- /* Materials — fixed, do not switch with ink mode */
32
- --color-paper: var(--paper);
33
- --color-linen: var(--linen);
34
- --color-sunk-2: var(--sunk-2);
35
- --color-sunk-3: var(--sunk-3);
36
- --color-ink: var(--ink);
37
- --color-ink-raised: var(--ink-raised);
38
- --color-grey: var(--grey);
39
- --color-grey-inverse: var(--grey-inverse);
40
-
41
- /* The yellow — one hue, by area */
42
- --color-yellow: var(--yellow);
43
- --color-yellow-accent: var(--yellow-accent);
44
- --color-yellow-accent-hover: var(--yellow-accent-hover);
45
- --color-yellow-light: var(--yellow-light);
46
- --color-yellow-hover: var(--yellow-hover);
47
- --color-yellow-1: var(--yellow-1);
48
- --color-yellow-2: var(--yellow-2);
49
- --color-yellow-3: var(--yellow-3);
50
- --color-yellow-4: var(--yellow-4);
51
- --color-yellow-5: var(--yellow-5);
52
- --color-yellow-wash-12: var(--yellow-12);
53
- --color-yellow-wash-20: var(--yellow-20);
54
- --color-yellow-wash-32: var(--yellow-32);
55
- --color-yellow-wash-50: var(--yellow-50);
56
- --color-marker: var(--marker);
57
-
58
- /* Semantic — switch with ink mode. Product code uses these. */
59
- --color-page: var(--bg-page);
60
- --color-sunk: var(--bg-sunk);
61
- --color-well: var(--bg-well);
62
- --color-chrome: var(--bg-chrome);
63
- --color-field: var(--bg-field);
64
- --color-fg: var(--text-primary);
65
- --color-fg-secondary: var(--text-secondary);
66
- --color-fg-label: var(--text-label);
67
- --color-fg-on-yellow-secondary: var(--text-on-yellow-secondary);
68
- --color-rule: var(--rule);
69
- --color-rule-soft: var(--rule-soft);
70
- --color-hover: var(--hover);
71
- --color-scrim: var(--scrim);
72
-
73
- /* On an ink surface inside a paper page */
74
- --color-inv: var(--inv-bg);
75
- --color-inv-raised: var(--inv-bg-raised);
76
- --color-inv-fg: var(--inv-text);
77
- --color-inv-fg-secondary: var(--inv-text-secondary);
78
- --color-inv-rule: var(--inv-rule);
79
-
80
- /* Product status: yellow, ink and one red. Progress is an ink outline and
81
- complete a grey dot — they take no colour of their own. */
82
- --color-attention: var(--status-attention);
83
- --color-attention-wash: var(--status-attention-wash);
84
- --color-error: var(--status-error);
85
- --color-error-text: var(--status-error-text);
86
- --color-error-wash: var(--status-error-wash);
87
-
88
- --color-transparent: transparent;
89
- --color-current: currentColor;
90
- --color-white: #fff;
91
-
92
- /* Radius ladder — same names and values as 3.0 spacing.css */
93
- --radius-xs: 4px;
94
- --radius-sm: 6px;
95
- --radius-md: 8px;
96
- --radius-lg: 16px;
97
- --radius-xl: 24px;
98
- --radius-pill: 999px;
99
-
100
- /* One family. Same stacks as fonts.css (the ones in effect): font-sans
101
- for Latin, font-sans-cjk for Chinese pages (Geist for Latin and
102
- figures, Noto Sans SC for hanzi). */
103
- --font-sans: "Geist Variable", "Geist", "Helvetica Neue", Helvetica, Arial, sans-serif;
104
- --font-sans-cjk: "Geist Variable", "Geist", "Noto Sans SC Variable", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
105
-
106
- --font-weight-normal: 400;
107
- --font-weight-medium: 500;
108
- --font-weight-semibold: 600;
109
- --font-weight-bold: 700;
110
-
111
- /* Type scale (typography.css). Product UI body is 14px, content 15px. */
112
- --text-meta: 12px;
113
- --text-small: 13.5px;
114
- --text-ui: 14px;
115
- --text-body: 15px;
116
- --text-h3: 18px;
117
- --text-lede: 20px;
118
- --text-title: 22px;
119
- --text-figure: 32px;
120
- --text-h2: var(--size-h2);
121
- --text-h1: var(--size-h1);
122
- --text-display: var(--size-display);
123
-
124
- --tracking-display: -0.025em;
125
- --tracking-heading: -0.015em;
126
- --tracking-figure: -0.03em;
127
-
128
- /* Motion — flat for state, ease-out for entry; nothing bounces */
129
- --ease-standard: cubic-bezier(.2,0,.2,1);
130
- --ease-out: cubic-bezier(.16,1,.3,1);
131
- --ease-in: cubic-bezier(.4,0,1,1);
132
- }
19
+ @import "./theme-reset.css";
20
+ @import "./theme-base.css";