@sixthshift/design-system 0.1.0
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/LICENSE +21 -0
- package/README.md +222 -0
- package/dist/styles.css +2 -0
- package/dist/theme.generated.css +438 -0
- package/package.json +238 -0
- package/src/components/Avatar/Avatar.tsx +19 -0
- package/src/components/Avatar/index.ts +1 -0
- package/src/components/Badge/Badge.tsx +59 -0
- package/src/components/Badge/index.ts +1 -0
- package/src/components/BarChart/BarChart.tsx +51 -0
- package/src/components/BarChart/index.ts +1 -0
- package/src/components/Breadcrumb/Breadcrumb.tsx +47 -0
- package/src/components/Breadcrumb/index.ts +5 -0
- package/src/components/Button/Button.tsx +157 -0
- package/src/components/Button/index.ts +1 -0
- package/src/components/Calendar/Calendar.tsx +433 -0
- package/src/components/Calendar/calendar.hooks.ts +329 -0
- package/src/components/Calendar/calendar.types.ts +117 -0
- package/src/components/Calendar/index.ts +28 -0
- package/src/components/Card/Card.tsx +47 -0
- package/src/components/Card/index.ts +1 -0
- package/src/components/Checkbox/Checkbox.tsx +144 -0
- package/src/components/Checkbox/index.ts +1 -0
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +173 -0
- package/src/components/CheckboxGroup/index.ts +5 -0
- package/src/components/Code/Editor/Editor.tsx +161 -0
- package/src/components/Code/Editor/index.ts +2 -0
- package/src/components/Code/Editor/semanticTokenProvider.ts +69 -0
- package/src/components/Code/Editor/themes.ts +112 -0
- package/src/components/Code/ValidationStatus/ValidationStatus.tsx +81 -0
- package/src/components/Code/ValidationStatus/index.ts +1 -0
- package/src/components/Code/Workspace/StatusBar.tsx +47 -0
- package/src/components/Code/Workspace/Toolbar.tsx +47 -0
- package/src/components/Code/Workspace/Workspace.tsx +109 -0
- package/src/components/Code/Workspace/index.ts +3 -0
- package/src/components/ColorDot/ColorDot.tsx +50 -0
- package/src/components/ColorDot/index.ts +1 -0
- package/src/components/DatePicker/DatePicker.tsx +236 -0
- package/src/components/DatePicker/datepicker.hooks.ts +381 -0
- package/src/components/DatePicker/datepicker.types.ts +140 -0
- package/src/components/DatePicker/index.ts +12 -0
- package/src/components/DateRangePicker/DateRangePicker.tsx +127 -0
- package/src/components/DateRangePicker/daterangepicker.types.ts +53 -0
- package/src/components/DateRangePicker/index.ts +2 -0
- package/src/components/DateTimePicker/DateTimePicker.tsx +399 -0
- package/src/components/DateTimePicker/datetimepicker.types.ts +48 -0
- package/src/components/DateTimePicker/index.ts +2 -0
- package/src/components/DateTimeRangePicker/DateTimeRangePicker.tsx +679 -0
- package/src/components/DateTimeRangePicker/datetimerangepicker.types.ts +62 -0
- package/src/components/DateTimeRangePicker/index.ts +2 -0
- package/src/components/EmptyState/EmptyState.tsx +29 -0
- package/src/components/EmptyState/index.ts +1 -0
- package/src/components/Field/Field.tsx +60 -0
- package/src/components/Field/index.ts +1 -0
- package/src/components/FormField/FormField.tsx +55 -0
- package/src/components/FormField/index.ts +2 -0
- package/src/components/HeatMap/HeatMapCalendar.tsx +127 -0
- package/src/components/HeatMap/HeatMapMatrix.tsx +75 -0
- package/src/components/HeatMap/heat-map.utils.ts +15 -0
- package/src/components/HeatMap/index.ts +3 -0
- package/src/components/HoverCard/HoverCard.tsx +83 -0
- package/src/components/HoverCard/components/HoverCardContent.tsx +30 -0
- package/src/components/HoverCard/components/HoverCardContext.tsx +22 -0
- package/src/components/HoverCard/components/HoverCardTrigger.tsx +32 -0
- package/src/components/HoverCard/index.ts +3 -0
- package/src/components/Input/Input.tsx +48 -0
- package/src/components/Input/index.ts +1 -0
- package/src/components/LineChart/LineChart.tsx +251 -0
- package/src/components/LineChart/index.ts +1 -0
- package/src/components/Markdown/Markdown.tsx +40 -0
- package/src/components/Markdown/index.ts +1 -0
- package/src/components/Message/Message.tsx +59 -0
- package/src/components/Message/components/MessageBody.tsx +9 -0
- package/src/components/Message/components/MessageDescription.tsx +9 -0
- package/src/components/Message/components/MessageIcon.tsx +13 -0
- package/src/components/Message/components/MessageTitle.tsx +9 -0
- package/src/components/Message/index.ts +10 -0
- package/src/components/MetricList/MetricList.tsx +13 -0
- package/src/components/MetricList/MetricRow.tsx +30 -0
- package/src/components/MetricList/index.ts +2 -0
- package/src/components/Modal/Modal.tsx +146 -0
- package/src/components/Modal/components/ModalBody.tsx +9 -0
- package/src/components/Modal/components/ModalContext.tsx +27 -0
- package/src/components/Modal/components/ModalFooter.tsx +9 -0
- package/src/components/Modal/components/ModalHeader.tsx +29 -0
- package/src/components/Modal/components/index.ts +9 -0
- package/src/components/Modal/index.ts +13 -0
- package/src/components/NavBottom/NavBottom.tsx +53 -0
- package/src/components/NavBottom/index.ts +3 -0
- package/src/components/NavSide/NavItem.tsx +39 -0
- package/src/components/NavSide/NavSide.tsx +40 -0
- package/src/components/NavSide/index.ts +2 -0
- package/src/components/NavSide/types.ts +36 -0
- package/src/components/Pagination/Pagination.tsx +86 -0
- package/src/components/Pagination/index.ts +2 -0
- package/src/components/Popover/Popover.tsx +68 -0
- package/src/components/Popover/components/PopoverBody.tsx +32 -0
- package/src/components/Popover/components/PopoverClose.tsx +26 -0
- package/src/components/Popover/components/PopoverContext.tsx +24 -0
- package/src/components/Popover/components/PopoverTrigger.tsx +31 -0
- package/src/components/Popover/index.ts +10 -0
- package/src/components/ProgressBar/ProgressBar.tsx +42 -0
- package/src/components/ProgressBar/index.ts +1 -0
- package/src/components/RadioButton/RadioButton.tsx +89 -0
- package/src/components/RadioButton/index.ts +1 -0
- package/src/components/RadioButtonGroup/RadioButtonGroup.tsx +193 -0
- package/src/components/RadioButtonGroup/index.ts +5 -0
- package/src/components/SearchInput/SearchInput.tsx +45 -0
- package/src/components/SearchInput/index.ts +2 -0
- package/src/components/Select/Select.tsx +289 -0
- package/src/components/Select/SelectDropdown.tsx +90 -0
- package/src/components/Select/SelectTrigger.tsx +130 -0
- package/src/components/Select/index.ts +3 -0
- package/src/components/Select/useSelectKeyboard.ts +111 -0
- package/src/components/Separator/Separator.tsx +20 -0
- package/src/components/Separator/index.ts +1 -0
- package/src/components/Sheet/Sheet.tsx +136 -0
- package/src/components/Sheet/components/SheetBody.tsx +9 -0
- package/src/components/Sheet/components/SheetContext.tsx +23 -0
- package/src/components/Sheet/components/SheetFooter.tsx +9 -0
- package/src/components/Sheet/components/SheetHeader.tsx +29 -0
- package/src/components/Sheet/components/index.ts +9 -0
- package/src/components/Sheet/index.ts +13 -0
- package/src/components/Skeleton/Skeleton.tsx +7 -0
- package/src/components/Skeleton/index.ts +1 -0
- package/src/components/Sparkline/Sparkline.tsx +93 -0
- package/src/components/Sparkline/index.ts +1 -0
- package/src/components/Spinner/Spinner.tsx +41 -0
- package/src/components/Spinner/index.ts +1 -0
- package/src/components/StatsCard/StatsCard.tsx +40 -0
- package/src/components/StatsCard/index.ts +1 -0
- package/src/components/Switch/Switch.tsx +128 -0
- package/src/components/Switch/index.ts +1 -0
- package/src/components/Tabs/Tabs.tsx +49 -0
- package/src/components/Tabs/components/TabsContext.tsx +35 -0
- package/src/components/Tabs/components/TabsList.tsx +98 -0
- package/src/components/Tabs/components/TabsPanels.tsx +26 -0
- package/src/components/Tabs/components/TabsTrigger.tsx +69 -0
- package/src/components/Tabs/index.ts +3 -0
- package/src/components/TagChip/TagChip.tsx +46 -0
- package/src/components/TagChip/index.ts +1 -0
- package/src/components/TagInput/TagInput.tsx +60 -0
- package/src/components/TagInput/index.ts +1 -0
- package/src/components/Text/Text.tsx +35 -0
- package/src/components/Text/index.ts +1 -0
- package/src/components/TextInline/TextInline.tsx +35 -0
- package/src/components/TextInline/index.ts +1 -0
- package/src/components/Textarea/Textarea.tsx +20 -0
- package/src/components/Textarea/index.ts +1 -0
- package/src/components/TimePicker/PeriodSelector.tsx +28 -0
- package/src/components/TimePicker/TimeColumn.tsx +62 -0
- package/src/components/TimePicker/TimePicker.tsx +323 -0
- package/src/components/TimePicker/index.ts +7 -0
- package/src/components/TimePicker/timepicker.hooks.ts +173 -0
- package/src/components/TimePicker/timepicker.types.ts +101 -0
- package/src/components/Toast/Toast.tsx +111 -0
- package/src/components/Toast/index.ts +1 -0
- package/src/components/Toggle/Toggle.tsx +72 -0
- package/src/components/Toggle/index.ts +1 -0
- package/src/components/ToggleGroup/ToggleGroup.tsx +14 -0
- package/src/components/ToggleGroup/ToggleGroupContainer.tsx +19 -0
- package/src/components/ToggleGroup/ToggleGroupItem.tsx +51 -0
- package/src/components/ToggleGroup/ToggleGroupMultiple.tsx +61 -0
- package/src/components/ToggleGroup/ToggleGroupSingle.tsx +105 -0
- package/src/components/ToggleGroup/index.ts +2 -0
- package/src/components/ToggleGroup/toggleGroup.types.ts +55 -0
- package/src/components/Tooltip/Tooltip.tsx +66 -0
- package/src/components/Tooltip/components/TooltipBody.tsx +30 -0
- package/src/components/Tooltip/components/TooltipContext.tsx +22 -0
- package/src/components/Tooltip/components/TooltipTrigger.tsx +27 -0
- package/src/components/Tooltip/index.ts +9 -0
- package/src/date-time/arithmetic.ts +101 -0
- package/src/date-time/boundaries.ts +91 -0
- package/src/date-time/compare.ts +85 -0
- package/src/date-time/duration.ts +63 -0
- package/src/date-time/elapsed.ts +18 -0
- package/src/date-time/format.ts +722 -0
- package/src/date-time/index.ts +279 -0
- package/src/date-time/now.ts +70 -0
- package/src/date-time/parse.ts +170 -0
- package/src/date-time/serialize.ts +90 -0
- package/src/date-time/timezone.ts +47 -0
- package/src/date-time/validate.ts +278 -0
- package/src/hooks/index.ts +10 -0
- package/src/hooks/useCollapsible.ts +16 -0
- package/src/hooks/useControllableState.ts +54 -0
- package/src/hooks/useDebouncedCallback.ts +21 -0
- package/src/hooks/useDebouncedState.ts +20 -0
- package/src/hooks/useDeviceFormFactor.ts +49 -0
- package/src/hooks/useLocalStorage.ts +67 -0
- package/src/hooks/useMergedFloatingRef.ts +29 -0
- package/src/hooks/usePresence.ts +127 -0
- package/src/hooks/useStack.ts +99 -0
- package/src/hooks/useTheme.ts +105 -0
- package/src/internal/Slot.tsx +79 -0
- package/src/internal/index.ts +2 -0
- package/src/internal/rovingFocus.ts +39 -0
- package/src/internal/types.ts +10 -0
- package/src/lib/EmptyBoundary.tsx +12 -0
- package/src/lib/ErrorBoundary.tsx +48 -0
- package/src/lib/contexts/ComponentsContext/ComponentsContext.tsx +34 -0
- package/src/lib/contexts/ComponentsContext/index.ts +1 -0
- package/src/lib/contexts/OverlayContext/OverlayContext.tsx +93 -0
- package/src/lib/contexts/OverlayContext/hooks/useModal.tsx +125 -0
- package/src/lib/contexts/OverlayContext/hooks/useToast.ts +80 -0
- package/src/lib/contexts/OverlayContext/index.ts +6 -0
- package/src/lib/format.ts +51 -0
- package/src/lib/utils.ts +10 -0
- package/src/lib/withEmpty.tsx +14 -0
- package/src/lib/withErrorBoundary.tsx +16 -0
- package/src/lib/withSuspense.tsx +16 -0
- package/src/lib/withSuspenseAndErrorBoundary.tsx +26 -0
- package/src/styles/base.css +41 -0
- package/src/theme/index.ts +37 -0
- package/src/theme/palette.json +100 -0
- package/src/theme/palette.schema.json +40 -0
- package/src/theme/schema.ts +122 -0
- package/src/theme/theme.json +349 -0
- package/src/theme/theme.schema.json +876 -0
- package/src/theme/typography.json +7 -0
- package/src/theme/typography.schema.json +36 -0
- package/src/typography/Body.tsx +8 -0
- package/src/typography/Caption.tsx +8 -0
- package/src/typography/Code.tsx +8 -0
- package/src/typography/Display.tsx +8 -0
- package/src/typography/Emphasis.tsx +8 -0
- package/src/typography/Heading.tsx +23 -0
- package/src/typography/Label.tsx +10 -0
- package/src/typography/Lead.tsx +8 -0
- package/src/typography/Mono.tsx +8 -0
- package/src/typography/Muted.tsx +8 -0
- package/src/typography/SectionTitle.tsx +8 -0
- package/src/typography/Subtitle.tsx +8 -0
- package/src/typography/Timestamp.tsx +8 -0
- package/src/typography/index.ts +10 -0
- package/tailwind.config.ts +261 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "PA Typography",
|
|
4
|
+
"description": "Typography definition for Personal Assistant",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["fonts"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"$schema": {
|
|
9
|
+
"type": "string"
|
|
10
|
+
},
|
|
11
|
+
"fonts": {
|
|
12
|
+
"type": "object",
|
|
13
|
+
"description": "Font family definitions",
|
|
14
|
+
"properties": {
|
|
15
|
+
"sans": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"description": "Sans-serif font stack for body text and UI"
|
|
18
|
+
},
|
|
19
|
+
"mono": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"description": "Monospace font stack for code and technical content"
|
|
22
|
+
},
|
|
23
|
+
"serif": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"description": "Serif font stack for headings or special content"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"required": ["sans", "mono"],
|
|
29
|
+
"additionalProperties": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"description": "Additional font family definition"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"additionalProperties": false
|
|
36
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Text, type TextProps } from "@sixthshift/design-system/text";
|
|
2
|
+
import { cn } from "@sixthshift/design-system/utils";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
|
|
5
|
+
export const Body = React.forwardRef<HTMLElement, TextProps>(({ as = "p", className, ...props }, ref) => (
|
|
6
|
+
<Text ref={ref} as={as} className={cn("text-fg-normal text-sm", className)} {...props} />
|
|
7
|
+
));
|
|
8
|
+
Body.displayName = "Body";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Text, type TextProps } from "@sixthshift/design-system/text";
|
|
2
|
+
import { cn } from "@sixthshift/design-system/utils";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
|
|
5
|
+
export const Caption = React.forwardRef<HTMLElement, TextProps>(({ className, ...props }, ref) => (
|
|
6
|
+
<Text ref={ref} className={cn("text-fg-subtle text-xs", className)} {...props} />
|
|
7
|
+
));
|
|
8
|
+
Caption.displayName = "Caption";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Text, type TextProps } from "@sixthshift/design-system/text";
|
|
2
|
+
import { cn } from "@sixthshift/design-system/utils";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
|
|
5
|
+
export const Code = React.forwardRef<HTMLElement, TextProps>(({ className, ...props }, ref) => (
|
|
6
|
+
<Text ref={ref} as="code" className={cn("rounded bg-bg-subtle px-1.5 py-0.5 font-mono text-sm", className)} {...props} />
|
|
7
|
+
));
|
|
8
|
+
Code.displayName = "Code";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Text, type TextProps } from "@sixthshift/design-system/text";
|
|
2
|
+
import { cn } from "@sixthshift/design-system/utils";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
|
|
5
|
+
export const Display = React.forwardRef<HTMLElement, TextProps>(({ className, ...props }, ref) => (
|
|
6
|
+
<Text ref={ref} className={cn("font-bold text-3xl", className)} {...props} />
|
|
7
|
+
));
|
|
8
|
+
Display.displayName = "Display";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Text, type TextProps } from "@sixthshift/design-system/text";
|
|
2
|
+
import { cn } from "@sixthshift/design-system/utils";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
|
|
5
|
+
export const Emphasis = React.forwardRef<HTMLElement, TextProps>(({ className, ...props }, ref) => (
|
|
6
|
+
<Text ref={ref} className={cn("font-medium text-sm", className)} {...props} />
|
|
7
|
+
));
|
|
8
|
+
Emphasis.displayName = "Emphasis";
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Text, type TextProps } from "@sixthshift/design-system/text";
|
|
2
|
+
import { cn } from "@sixthshift/design-system/utils";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
|
|
5
|
+
const headingSizes = {
|
|
6
|
+
h1: "text-4xl",
|
|
7
|
+
h2: "text-3xl",
|
|
8
|
+
h3: "text-2xl",
|
|
9
|
+
h4: "text-xl",
|
|
10
|
+
h5: "text-lg",
|
|
11
|
+
h6: "text-base",
|
|
12
|
+
} as const;
|
|
13
|
+
|
|
14
|
+
type HeadingLevel = "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
|
|
15
|
+
|
|
16
|
+
export type HeadingProps = Omit<TextProps, "as"> & {
|
|
17
|
+
as?: HeadingLevel;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export const Heading = React.forwardRef<HTMLElement, HeadingProps>(({ as = "h2", className, ...props }, ref) => (
|
|
21
|
+
<Text ref={ref} as={as} className={cn("font-semibold tracking-tight", headingSizes[as], className)} {...props} />
|
|
22
|
+
));
|
|
23
|
+
Heading.displayName = "Heading";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { cn } from "@sixthshift/design-system/utils";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
|
|
4
|
+
export type LabelProps = React.LabelHTMLAttributes<HTMLLabelElement>;
|
|
5
|
+
|
|
6
|
+
export const Label = React.forwardRef<HTMLLabelElement, LabelProps>(({ className, ...props }, ref) => (
|
|
7
|
+
// biome-ignore lint/a11y/noLabelWithoutControl: Generic label component can be used with or without controls via htmlFor prop
|
|
8
|
+
<label ref={ref} className={cn("font-medium text-sm", className)} {...props} />
|
|
9
|
+
));
|
|
10
|
+
Label.displayName = "Label";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Text, type TextProps } from "@sixthshift/design-system/text";
|
|
2
|
+
import { cn } from "@sixthshift/design-system/utils";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
|
|
5
|
+
export const Lead = React.forwardRef<HTMLElement, TextProps>(({ as = "p", className, ...props }, ref) => (
|
|
6
|
+
<Text ref={ref} as={as} className={cn("text-fg-subtle text-lg leading-relaxed", className)} {...props} />
|
|
7
|
+
));
|
|
8
|
+
Lead.displayName = "Lead";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Text, type TextProps } from "@sixthshift/design-system/text";
|
|
2
|
+
import { cn } from "@sixthshift/design-system/utils";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
|
|
5
|
+
export const Mono = React.forwardRef<HTMLElement, TextProps>(({ className, ...props }, ref) => (
|
|
6
|
+
<Text ref={ref} className={cn("font-mono text-fg-subtle text-sm", className)} {...props} />
|
|
7
|
+
));
|
|
8
|
+
Mono.displayName = "Mono";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Text, type TextProps } from "@sixthshift/design-system/text";
|
|
2
|
+
import { cn } from "@sixthshift/design-system/utils";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
|
|
5
|
+
export const Muted = React.forwardRef<HTMLElement, TextProps>(({ className, ...props }, ref) => (
|
|
6
|
+
<Text ref={ref} className={cn("text-fg-subtle text-sm", className)} {...props} />
|
|
7
|
+
));
|
|
8
|
+
Muted.displayName = "Muted";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Text, type TextProps } from "@sixthshift/design-system/text";
|
|
2
|
+
import { cn } from "@sixthshift/design-system/utils";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
|
|
5
|
+
export const SectionTitle = React.forwardRef<HTMLElement, TextProps>(({ className, ...props }, ref) => (
|
|
6
|
+
<Text ref={ref} className={cn("font-medium text-fg-subtle text-sm uppercase tracking-wide", className)} {...props} />
|
|
7
|
+
));
|
|
8
|
+
SectionTitle.displayName = "SectionTitle";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Text, type TextProps } from "@sixthshift/design-system/text";
|
|
2
|
+
import { cn } from "@sixthshift/design-system/utils";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
|
|
5
|
+
export const Subtitle = React.forwardRef<HTMLElement, TextProps>(({ className, ...props }, ref) => (
|
|
6
|
+
<Text ref={ref} className={cn("text-fg-subtle", className)} {...props} />
|
|
7
|
+
));
|
|
8
|
+
Subtitle.displayName = "Subtitle";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Text, type TextProps } from "@sixthshift/design-system/text";
|
|
2
|
+
import { cn } from "@sixthshift/design-system/utils";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
|
|
5
|
+
export const Timestamp = React.forwardRef<HTMLElement, TextProps>(({ className, ...props }, ref) => (
|
|
6
|
+
<Text ref={ref} className={cn("font-mono text-fg-subtle text-xs", className)} {...props} />
|
|
7
|
+
));
|
|
8
|
+
Timestamp.displayName = "Timestamp";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { Body } from "./Body";
|
|
2
|
+
export { Caption } from "./Caption";
|
|
3
|
+
export { Code } from "./Code";
|
|
4
|
+
export { Display } from "./Display";
|
|
5
|
+
export { Emphasis } from "./Emphasis";
|
|
6
|
+
export { Heading, type HeadingProps } from "./Heading";
|
|
7
|
+
export { Label, type LabelProps } from "./Label";
|
|
8
|
+
export { Lead } from "./Lead";
|
|
9
|
+
export { Muted } from "./Muted";
|
|
10
|
+
export { SectionTitle } from "./SectionTitle";
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import type { Config } from "tailwindcss";
|
|
2
|
+
|
|
3
|
+
const config: Config = {
|
|
4
|
+
darkMode: ["selector", '[data-theme="dark"]'],
|
|
5
|
+
content: ["./src/**/*.{ts,tsx}"],
|
|
6
|
+
theme: {
|
|
7
|
+
colors: {
|
|
8
|
+
transparent: "transparent",
|
|
9
|
+
current: "currentColor",
|
|
10
|
+
white: "#ffffff",
|
|
11
|
+
black: "#000000",
|
|
12
|
+
bg: {
|
|
13
|
+
overlay: "var(--bg-overlay)",
|
|
14
|
+
strong: "var(--bg-strong)",
|
|
15
|
+
"strong-hovered": "var(--bg-strong-hovered)",
|
|
16
|
+
"strong-pressed": "var(--bg-strong-pressed)",
|
|
17
|
+
"strong-disabled": "var(--bg-strong-disabled)",
|
|
18
|
+
normal: "var(--bg-normal)",
|
|
19
|
+
"normal-hovered": "var(--bg-normal-hovered)",
|
|
20
|
+
"normal-pressed": "var(--bg-normal-pressed)",
|
|
21
|
+
"normal-disabled": "var(--bg-normal-disabled)",
|
|
22
|
+
subtle: "var(--bg-subtle)",
|
|
23
|
+
"subtle-hovered": "var(--bg-subtle-hovered)",
|
|
24
|
+
"subtle-pressed": "var(--bg-subtle-pressed)",
|
|
25
|
+
"subtle-disabled": "var(--bg-subtle-disabled)",
|
|
26
|
+
"brand-subtle": "var(--bg-brand-subtle)",
|
|
27
|
+
"brand-subtle-hovered": "var(--bg-brand-subtle-hovered)",
|
|
28
|
+
"brand-subtle-pressed": "var(--bg-brand-subtle-pressed)",
|
|
29
|
+
"brand-subtle-disabled": "var(--bg-brand-subtle-disabled)",
|
|
30
|
+
brand: "var(--bg-brand)",
|
|
31
|
+
"brand-hovered": "var(--bg-brand-hovered)",
|
|
32
|
+
"brand-pressed": "var(--bg-brand-pressed)",
|
|
33
|
+
"brand-disabled": "var(--bg-brand-disabled)",
|
|
34
|
+
"brand-strong": "var(--bg-brand-strong)",
|
|
35
|
+
"brand-strong-hovered": "var(--bg-brand-strong-hovered)",
|
|
36
|
+
"brand-strong-pressed": "var(--bg-brand-strong-pressed)",
|
|
37
|
+
"brand-strong-disabled": "var(--bg-brand-strong-disabled)",
|
|
38
|
+
"success-subtle": "var(--bg-success-subtle)",
|
|
39
|
+
"success-subtle-hovered": "var(--bg-success-subtle-hovered)",
|
|
40
|
+
"success-subtle-pressed": "var(--bg-success-subtle-pressed)",
|
|
41
|
+
"success-subtle-disabled": "var(--bg-success-subtle-disabled)",
|
|
42
|
+
success: "var(--bg-success)",
|
|
43
|
+
"success-hovered": "var(--bg-success-hovered)",
|
|
44
|
+
"success-pressed": "var(--bg-success-pressed)",
|
|
45
|
+
"success-disabled": "var(--bg-success-disabled)",
|
|
46
|
+
"success-strong": "var(--bg-success-strong)",
|
|
47
|
+
"success-strong-hovered": "var(--bg-success-strong-hovered)",
|
|
48
|
+
"success-strong-pressed": "var(--bg-success-strong-pressed)",
|
|
49
|
+
"success-strong-disabled": "var(--bg-success-strong-disabled)",
|
|
50
|
+
"warning-subtle": "var(--bg-warning-subtle)",
|
|
51
|
+
"warning-subtle-hovered": "var(--bg-warning-subtle-hovered)",
|
|
52
|
+
"warning-subtle-pressed": "var(--bg-warning-subtle-pressed)",
|
|
53
|
+
"warning-subtle-disabled": "var(--bg-warning-subtle-disabled)",
|
|
54
|
+
warning: "var(--bg-warning)",
|
|
55
|
+
"warning-hovered": "var(--bg-warning-hovered)",
|
|
56
|
+
"warning-pressed": "var(--bg-warning-pressed)",
|
|
57
|
+
"warning-disabled": "var(--bg-warning-disabled)",
|
|
58
|
+
"warning-strong": "var(--bg-warning-strong)",
|
|
59
|
+
"warning-strong-hovered": "var(--bg-warning-strong-hovered)",
|
|
60
|
+
"warning-strong-pressed": "var(--bg-warning-strong-pressed)",
|
|
61
|
+
"warning-strong-disabled": "var(--bg-warning-strong-disabled)",
|
|
62
|
+
"danger-subtle": "var(--bg-danger-subtle)",
|
|
63
|
+
"danger-subtle-hovered": "var(--bg-danger-subtle-hovered)",
|
|
64
|
+
"danger-subtle-pressed": "var(--bg-danger-subtle-pressed)",
|
|
65
|
+
"danger-subtle-disabled": "var(--bg-danger-subtle-disabled)",
|
|
66
|
+
danger: "var(--bg-danger)",
|
|
67
|
+
"danger-hovered": "var(--bg-danger-hovered)",
|
|
68
|
+
"danger-pressed": "var(--bg-danger-pressed)",
|
|
69
|
+
"danger-disabled": "var(--bg-danger-disabled)",
|
|
70
|
+
"danger-strong": "var(--bg-danger-strong)",
|
|
71
|
+
"danger-strong-hovered": "var(--bg-danger-strong-hovered)",
|
|
72
|
+
"danger-strong-pressed": "var(--bg-danger-strong-pressed)",
|
|
73
|
+
"danger-strong-disabled": "var(--bg-danger-strong-disabled)",
|
|
74
|
+
},
|
|
75
|
+
fg: {
|
|
76
|
+
strong: "var(--fg-strong)",
|
|
77
|
+
"strong-hovered": "var(--fg-strong-hovered)",
|
|
78
|
+
"strong-pressed": "var(--fg-strong-pressed)",
|
|
79
|
+
"strong-disabled": "var(--fg-strong-disabled)",
|
|
80
|
+
"on-strong": "var(--fg-on-strong)",
|
|
81
|
+
"on-strong-hovered": "var(--fg-on-strong-hovered)",
|
|
82
|
+
"on-strong-pressed": "var(--fg-on-strong-pressed)",
|
|
83
|
+
"on-strong-disabled": "var(--fg-on-strong-disabled)",
|
|
84
|
+
normal: "var(--fg-normal)",
|
|
85
|
+
"normal-hovered": "var(--fg-normal-hovered)",
|
|
86
|
+
"normal-pressed": "var(--fg-normal-pressed)",
|
|
87
|
+
"normal-disabled": "var(--fg-normal-disabled)",
|
|
88
|
+
subtle: "var(--fg-subtle)",
|
|
89
|
+
"subtle-hovered": "var(--fg-subtle-hovered)",
|
|
90
|
+
"subtle-pressed": "var(--fg-subtle-pressed)",
|
|
91
|
+
"subtle-disabled": "var(--fg-subtle-disabled)",
|
|
92
|
+
brand: "var(--fg-brand)",
|
|
93
|
+
"brand-hovered": "var(--fg-brand-hovered)",
|
|
94
|
+
"brand-pressed": "var(--fg-brand-pressed)",
|
|
95
|
+
"brand-disabled": "var(--fg-brand-disabled)",
|
|
96
|
+
"on-brand-subtle": "var(--fg-on-brand-subtle)",
|
|
97
|
+
"on-brand-subtle-hovered": "var(--fg-on-brand-subtle-hovered)",
|
|
98
|
+
"on-brand-subtle-pressed": "var(--fg-on-brand-subtle-pressed)",
|
|
99
|
+
"on-brand-subtle-disabled": "var(--fg-on-brand-subtle-disabled)",
|
|
100
|
+
"on-brand": "var(--fg-on-brand)",
|
|
101
|
+
"on-brand-hovered": "var(--fg-on-brand-hovered)",
|
|
102
|
+
"on-brand-pressed": "var(--fg-on-brand-pressed)",
|
|
103
|
+
"on-brand-disabled": "var(--fg-on-brand-disabled)",
|
|
104
|
+
"on-brand-strong": "var(--fg-on-brand-strong)",
|
|
105
|
+
"on-brand-strong-hovered": "var(--fg-on-brand-strong-hovered)",
|
|
106
|
+
"on-brand-strong-pressed": "var(--fg-on-brand-strong-pressed)",
|
|
107
|
+
"on-brand-strong-disabled": "var(--fg-on-brand-strong-disabled)",
|
|
108
|
+
success: "var(--fg-success)",
|
|
109
|
+
"success-hovered": "var(--fg-success-hovered)",
|
|
110
|
+
"success-pressed": "var(--fg-success-pressed)",
|
|
111
|
+
"success-disabled": "var(--fg-success-disabled)",
|
|
112
|
+
"on-success-subtle": "var(--fg-on-success-subtle)",
|
|
113
|
+
"on-success-subtle-hovered": "var(--fg-on-success-subtle-hovered)",
|
|
114
|
+
"on-success-subtle-pressed": "var(--fg-on-success-subtle-pressed)",
|
|
115
|
+
"on-success-subtle-disabled": "var(--fg-on-success-subtle-disabled)",
|
|
116
|
+
"on-success": "var(--fg-on-success)",
|
|
117
|
+
"on-success-hovered": "var(--fg-on-success-hovered)",
|
|
118
|
+
"on-success-pressed": "var(--fg-on-success-pressed)",
|
|
119
|
+
"on-success-disabled": "var(--fg-on-success-disabled)",
|
|
120
|
+
warning: "var(--fg-warning)",
|
|
121
|
+
"warning-hovered": "var(--fg-warning-hovered)",
|
|
122
|
+
"warning-pressed": "var(--fg-warning-pressed)",
|
|
123
|
+
"warning-disabled": "var(--fg-warning-disabled)",
|
|
124
|
+
"on-warning-subtle": "var(--fg-on-warning-subtle)",
|
|
125
|
+
"on-warning-subtle-hovered": "var(--fg-on-warning-subtle-hovered)",
|
|
126
|
+
"on-warning-subtle-pressed": "var(--fg-on-warning-subtle-pressed)",
|
|
127
|
+
"on-warning-subtle-disabled": "var(--fg-on-warning-subtle-disabled)",
|
|
128
|
+
"on-warning": "var(--fg-on-warning)",
|
|
129
|
+
"on-warning-hovered": "var(--fg-on-warning-hovered)",
|
|
130
|
+
"on-warning-pressed": "var(--fg-on-warning-pressed)",
|
|
131
|
+
"on-warning-disabled": "var(--fg-on-warning-disabled)",
|
|
132
|
+
danger: "var(--fg-danger)",
|
|
133
|
+
"danger-hovered": "var(--fg-danger-hovered)",
|
|
134
|
+
"danger-pressed": "var(--fg-danger-pressed)",
|
|
135
|
+
"danger-disabled": "var(--fg-danger-disabled)",
|
|
136
|
+
"on-danger-subtle": "var(--fg-on-danger-subtle)",
|
|
137
|
+
"on-danger-subtle-hovered": "var(--fg-on-danger-subtle-hovered)",
|
|
138
|
+
"on-danger-subtle-pressed": "var(--fg-on-danger-subtle-pressed)",
|
|
139
|
+
"on-danger-subtle-disabled": "var(--fg-on-danger-subtle-disabled)",
|
|
140
|
+
"on-danger": "var(--fg-on-danger)",
|
|
141
|
+
"on-danger-hovered": "var(--fg-on-danger-hovered)",
|
|
142
|
+
"on-danger-pressed": "var(--fg-on-danger-pressed)",
|
|
143
|
+
"on-danger-disabled": "var(--fg-on-danger-disabled)",
|
|
144
|
+
},
|
|
145
|
+
border: {
|
|
146
|
+
strong: "var(--border-strong)",
|
|
147
|
+
"strong-hovered": "var(--border-strong-hovered)",
|
|
148
|
+
"strong-pressed": "var(--border-strong-pressed)",
|
|
149
|
+
"strong-disabled": "var(--border-strong-disabled)",
|
|
150
|
+
normal: "var(--border-normal)",
|
|
151
|
+
"normal-hovered": "var(--border-normal-hovered)",
|
|
152
|
+
"normal-pressed": "var(--border-normal-pressed)",
|
|
153
|
+
"normal-disabled": "var(--border-normal-disabled)",
|
|
154
|
+
subtle: "var(--border-subtle)",
|
|
155
|
+
"subtle-hovered": "var(--border-subtle-hovered)",
|
|
156
|
+
"subtle-pressed": "var(--border-subtle-pressed)",
|
|
157
|
+
"subtle-disabled": "var(--border-subtle-disabled)",
|
|
158
|
+
"brand-subtle": "var(--border-brand-subtle)",
|
|
159
|
+
"brand-subtle-hovered": "var(--border-brand-subtle-hovered)",
|
|
160
|
+
"brand-subtle-pressed": "var(--border-brand-subtle-pressed)",
|
|
161
|
+
"brand-subtle-disabled": "var(--border-brand-subtle-disabled)",
|
|
162
|
+
brand: "var(--border-brand)",
|
|
163
|
+
"brand-hovered": "var(--border-brand-hovered)",
|
|
164
|
+
"brand-pressed": "var(--border-brand-pressed)",
|
|
165
|
+
"brand-disabled": "var(--border-brand-disabled)",
|
|
166
|
+
"brand-strong": "var(--border-brand-strong)",
|
|
167
|
+
"brand-strong-hovered": "var(--border-brand-strong-hovered)",
|
|
168
|
+
"brand-strong-pressed": "var(--border-brand-strong-pressed)",
|
|
169
|
+
"brand-strong-disabled": "var(--border-brand-strong-disabled)",
|
|
170
|
+
success: "var(--border-success)",
|
|
171
|
+
"success-hovered": "var(--border-success-hovered)",
|
|
172
|
+
"success-pressed": "var(--border-success-pressed)",
|
|
173
|
+
"success-disabled": "var(--border-success-disabled)",
|
|
174
|
+
warning: "var(--border-warning)",
|
|
175
|
+
"warning-hovered": "var(--border-warning-hovered)",
|
|
176
|
+
"warning-pressed": "var(--border-warning-pressed)",
|
|
177
|
+
"warning-disabled": "var(--border-warning-disabled)",
|
|
178
|
+
danger: "var(--border-danger)",
|
|
179
|
+
"danger-hovered": "var(--border-danger-hovered)",
|
|
180
|
+
"danger-pressed": "var(--border-danger-pressed)",
|
|
181
|
+
"danger-disabled": "var(--border-danger-disabled)",
|
|
182
|
+
},
|
|
183
|
+
focus: {
|
|
184
|
+
ring: "var(--focus-ring)",
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
zIndex: {
|
|
188
|
+
auto: "auto",
|
|
189
|
+
"content-sticky": "10",
|
|
190
|
+
"app-bar": "30",
|
|
191
|
+
sheet: "50",
|
|
192
|
+
popover: "60",
|
|
193
|
+
modal: "70",
|
|
194
|
+
toast: "9999",
|
|
195
|
+
},
|
|
196
|
+
extend: {
|
|
197
|
+
keyframes: {
|
|
198
|
+
"fade-in": {
|
|
199
|
+
from: { opacity: "0" },
|
|
200
|
+
to: { opacity: "1" },
|
|
201
|
+
},
|
|
202
|
+
"fade-out": {
|
|
203
|
+
from: { opacity: "1" },
|
|
204
|
+
to: { opacity: "0" },
|
|
205
|
+
},
|
|
206
|
+
"slide-up-in": {
|
|
207
|
+
from: { transform: "translateY(100%)" },
|
|
208
|
+
to: { transform: "translateY(0)" },
|
|
209
|
+
},
|
|
210
|
+
"slide-up-out": {
|
|
211
|
+
from: { transform: "translateY(0)" },
|
|
212
|
+
to: { transform: "translateY(100%)" },
|
|
213
|
+
},
|
|
214
|
+
"slide-right-in": {
|
|
215
|
+
from: { transform: "translateX(100%)" },
|
|
216
|
+
to: { transform: "translateX(0)" },
|
|
217
|
+
},
|
|
218
|
+
"slide-right-out": {
|
|
219
|
+
from: { transform: "translateX(0)" },
|
|
220
|
+
to: { transform: "translateX(100%)" },
|
|
221
|
+
},
|
|
222
|
+
"slide-left-in": {
|
|
223
|
+
from: { transform: "translateX(-100%)" },
|
|
224
|
+
to: { transform: "translateX(0)" },
|
|
225
|
+
},
|
|
226
|
+
"slide-left-out": {
|
|
227
|
+
from: { transform: "translateX(0)" },
|
|
228
|
+
to: { transform: "translateX(-100%)" },
|
|
229
|
+
},
|
|
230
|
+
},
|
|
231
|
+
animation: {
|
|
232
|
+
"fade-in": "fade-in 200ms ease-out forwards",
|
|
233
|
+
"fade-out": "fade-out 200ms ease-out forwards",
|
|
234
|
+
"fade-in-slow": "fade-in 300ms ease-out forwards",
|
|
235
|
+
"fade-out-slow": "fade-out 300ms ease-out forwards",
|
|
236
|
+
"slide-up-in": "slide-up-in 200ms ease-out forwards",
|
|
237
|
+
"slide-up-out": "slide-up-out 200ms ease-out forwards",
|
|
238
|
+
"slide-right-in": "slide-right-in 200ms ease-out forwards",
|
|
239
|
+
"slide-right-out": "slide-right-out 200ms ease-out forwards",
|
|
240
|
+
"slide-left-in": "slide-left-in 200ms ease-out forwards",
|
|
241
|
+
"slide-left-out": "slide-left-out 200ms ease-out forwards",
|
|
242
|
+
},
|
|
243
|
+
},
|
|
244
|
+
},
|
|
245
|
+
plugins: [
|
|
246
|
+
// biome-ignore lint/suspicious/noExplicitAny: Tailwind plugin API accepts nested CSS-in-JS objects
|
|
247
|
+
({ addBase }: { addBase: (styles: any) => void }) => {
|
|
248
|
+
addBase({
|
|
249
|
+
"@media (prefers-reduced-motion: reduce)": {
|
|
250
|
+
"*, *::before, *::after": {
|
|
251
|
+
"animation-duration": "0.01ms !important",
|
|
252
|
+
"animation-iteration-count": "1 !important",
|
|
253
|
+
"transition-duration": "0.01ms !important",
|
|
254
|
+
},
|
|
255
|
+
},
|
|
256
|
+
});
|
|
257
|
+
},
|
|
258
|
+
],
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
export default config;
|