@xenide-io/the-old-ui-theme 0.4.4 → 0.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-54ZR4VL5.mjs → chunk-RZXHZWUB.mjs} +44 -17
- package/dist/{index-B5NOyoKS.d.mts → index-Od4pIP4F.d.mts} +7 -1
- package/dist/{index-B5NOyoKS.d.ts → index-Od4pIP4F.d.ts} +7 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +37 -10
- package/dist/index.mjs +1 -1
- package/dist/suite.d.mts +152 -41
- package/dist/suite.d.ts +152 -41
- package/dist/suite.js +1366 -671
- package/dist/suite.mjs +1304 -610
- package/dist/ui.d.mts +1 -1
- package/dist/ui.d.ts +1 -1
- package/dist/ui.js +37 -10
- package/dist/ui.mjs +1 -1
- package/package.json +7 -3
- package/src/components/ui/Modal.tsx +70 -26
- package/src/styles/suite-skin.css +284 -24
- package/src/suite/components/ai-panel.test.ts +20 -0
- package/src/suite/components/ai-panel.tsx +494 -103
- package/src/suite/components/suite-app-layout.tsx +48 -28
- package/src/suite/components/suite-layout.tsx +84 -40
- package/src/suite/components/suite-mobile-drawer.tsx +35 -22
- package/src/suite/components/suite-notification-bell.tsx +9 -3
- package/src/suite/components/suite-settings-layout.tsx +82 -0
- package/src/suite/components/suite-settings-mobile-nav.tsx +18 -17
- package/src/suite/components/suite-skeleton.tsx +3 -3
- package/src/suite/components/today-calibrating.tsx +11 -35
- package/src/suite/components/today-page-frame.tsx +19 -11
- package/src/suite/components/today-ui.tsx +276 -19
- package/src/suite/index.ts +41 -25
- package/src/suite/lib/apps.ts +32 -2
- package/src/suite/lib/use-sidebar-width.ts +114 -0
- package/src/components/sections/AccordionShowcase.tsx +0 -45
- package/src/components/sections/AlertShowcase.tsx +0 -40
- package/src/components/sections/AvatarShowcase.tsx +0 -80
- package/src/components/sections/BadgeShowcase.tsx +0 -65
- package/src/components/sections/ButtonShowcase.tsx +0 -308
- package/src/components/sections/CalendarShowcase.tsx +0 -35
- package/src/components/sections/CardShowcase.tsx +0 -159
- package/src/components/sections/CodeMockupShowcase.tsx +0 -56
- package/src/components/sections/ColorPalette.tsx +0 -117
- package/src/components/sections/CommandPaletteShowcase.tsx +0 -48
- package/src/components/sections/CountdownShowcase.tsx +0 -43
- package/src/components/sections/DiffShowcase.tsx +0 -70
- package/src/components/sections/DrawerShowcase.tsx +0 -97
- package/src/components/sections/DropdownShowcase.tsx +0 -98
- package/src/components/sections/EmptyStateShowcase.tsx +0 -50
- package/src/components/sections/FilterChipsShowcase.tsx +0 -98
- package/src/components/sections/FormShowcase.tsx +0 -127
- package/src/components/sections/HoverCardShowcase.tsx +0 -50
- package/src/components/sections/IconShowcase.tsx +0 -121
- package/src/components/sections/IndicatorShowcase.tsx +0 -52
- package/src/components/sections/KbdShowcase.tsx +0 -57
- package/src/components/sections/ModalShowcase.tsx +0 -211
- package/src/components/sections/NavigationShowcase.tsx +0 -199
- package/src/components/sections/NewComponentsShowcase.tsx +0 -1052
- package/src/components/sections/ProductLayoutsShowcase.tsx +0 -78
- package/src/components/sections/ProgressShowcase.tsx +0 -82
- package/src/components/sections/QuillChartShowcase.tsx +0 -92
- package/src/components/sections/QuillDashboardShowcase.tsx +0 -149
- package/src/components/sections/SegmentedControlShowcase.tsx +0 -49
- package/src/components/sections/SetupThemeShowcase.tsx +0 -262
- package/src/components/sections/SidebarShowcase.tsx +0 -152
- package/src/components/sections/StackShowcase.tsx +0 -33
- package/src/components/sections/StepperShowcase.tsx +0 -37
- package/src/components/sections/SuiteShowcase.tsx +0 -669
- package/src/components/sections/SwapShowcase.tsx +0 -99
- package/src/components/sections/TabShowcase.tsx +0 -84
- package/src/components/sections/TableShowcase.tsx +0 -142
- package/src/components/sections/TimelineShowcase.tsx +0 -83
- package/src/components/sections/ToastShowcase.tsx +0 -108
- package/src/components/sections/TooltipShowcase.tsx +0 -38
- package/src/components/sections/UtilityShowcase.tsx +0 -81
- package/src/styles/excel-themes.css +0 -110
- package/src/styles/lemon-primitives.css +0 -550
package/dist/ui.d.mts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { A as Accordion, a as Alert, b as AlertDialog, c as AlertDialogProps, d as AlertProps, e as AlertStatus, f as AppLayout, g as AppLayoutProps, h as AuthCard, i as AuthCardProps, j as AuthDivider, k as AuthDividerProps, l as AuthLayout, m as AuthLayoutProps, n as Autocomplete, o as AutocompleteOption, p as AutocompleteProps, q as Avatar, r as AvatarGroup, s as AvatarGroupProps, t as AvatarProps, u as AvatarSize, v as AvatarStatus, B as Badge, w as BadgeProps, x as BadgeSize, y as BadgeVariant, z as Banner, C as BannerProps, D as BannerType, E as BreadcrumbItem, F as Breadcrumbs, G as BreadcrumbsProps, H as Button, I as ButtonChrome, J as ButtonChromeProps, K as ButtonGroup, L as ButtonGroupProps, M as ButtonProps, N as ButtonShape, O as ButtonSize, P as ButtonVariant, R as Calendar, S as CanonicalIconName, T as Caption, U as Card, V as CardProps, W as CardVariant, X as ChatBubble, Y as ChatBubbleProps, Z as ChatBubbleVariant, _ as Checkbox, $ as CheckboxProps, a0 as Chip, a1 as ChipProps, a2 as CodeBlock, a3 as Collapsible, a4 as CollapsibleProps, a5 as CollapsibleSection, a6 as Combobox, a7 as ComboboxOption, a8 as ComboboxProps, a9 as CommandPalette, aa as ComponentDocs, ab as ComponentDocsProps, ac as ComponentPropRow, ad as ContextMenu, ae as ContextMenuItem, af as ContextMenuProps, ag as DataTable, ah as DataTableColumn, ai as DataTableProps, aj as DatePicker, ak as DatePickerProps, al as Dialog, am as DialogProps, an as Display, ao as Divider, ap as DividerProps, aq as Dot, ar as DotProps, as as Drawer, at as DrawerProps, au as DrawerSide, av as DrawerSize, aw as DropdownAlign, ax as DropdownButton, ay as DropdownButtonProps, az as DropdownItem, aA as DropdownItemProps, aB as DropdownMenu, aC as DropdownMenuProps, aD as DropdownRadioGroup, aE as DropdownRadioGroupProps, aF as DropdownRadioItem, aG as DropdownRadioItemProps, aH as DropdownSide, aI as EmptyState, aJ as FileUpload, aK as FileUploadProps, aL as FilterBar, aM as FilterBarProps, aN as FilterChip, aO as FilterChips, aP as FilterChipsProps, aQ as FilterControls, aR as FilterControlsProps, aS as FilterMenu, aT as FilterMenuOption, aU as FilterMenuProps, aV as FormField, aW as FormFieldControlProps, aX as FormFieldProps, aY as H1, aZ as H2, a_ as H3, a$ as H4, b0 as H5, b1 as HoverCard, b7 as Icon, b3 as IconAliasName, bc as IconByName, bN as IconName, bU as IconProps, cj as Indicator, ck as IndicatorPosition, cl as IndicatorProps, cm as Input, cn as InputGroup, co as InputGroupProps, cp as InputProps, cq as InputSize, cr as InputVariant, cs as Kbd, ct as KbdPlatform, cu as KbdProps, cv as KbdVariant, cw as Label, cx as Lead, cy as Lettermark, cz as LettermarkProps, cA as Link, cB as LinkProps, cC as Loader, cD as LoaderProps, cE as LoaderSize, cF as LoaderVariant, cG as LoadingBar, cH as LoadingBarProps, cI as LoadingState, cJ as LoadingStateProps, cK as Menubar, cL as MenubarItem, cM as MenubarProps, cN as Metric, cO as MetricProps, cP as Modal, cQ as ModalProps, cR as ModalSize, cS as Mono, cT as NumberField, cU as NumberFieldProps, cW as Overline, cX as P, c_ as Pagination, c$ as PaginationProps, d0 as Panel, d1 as PanelProps, d2 as Popover, d3 as PopoverProps, d4 as Progress, d5 as ProgressCircle, d6 as ProgressCircleProps, d7 as ProgressProps, d8 as Radio, d9 as RadioProps, da as Range, db as RangeProps, dc as Rating, dd as RatingProps, de as Resizable, df as ResizableProps, dg as Row, dh as RowProps, di as ScrollArea, dj as ScrollAreaProps, dk as SearchGroup, dl as SearchGroupProps, dm as SearchInput, dn as SearchInputProps, dp as SegmentedControl, dq as Select, dr as SelectProps, ds as SettingsLayout, dt as SettingsLayoutProps, du as SettingsNav, dv as SettingsNavGroup, dw as SettingsNavItem, dx as SettingsNavProps, dy as ShowcaseWrapper, dz as Sidebar, dA as SidebarGroup, dB as SidebarItemDef, dC as SidebarProps, dD as Skeleton, dE as SkeletonProps, dF as SkeletonShape, dG as Small, dH as Snack, dI as SnackProps, dJ as SortMenu, dK as SortMenuProps, dL as Spinner, dM as SpinnerProps, dN as Splotch, dO as SplotchColor, dP as SplotchProps, dQ as Stat, dR as StatProps, dS as StatTone, dT as Stepper, dU as TabItem, dV as Table, dW as TableColumn, dX as TableProps, dY as Tabs, dZ as TabsProps, d_ as TabsVariant, d$ as Tag, e0 as TagProps, e1 as TagType, e2 as Terminal, e3 as TerminalProps, e4 as Textarea, e5 as TextareaProps, e6 as ThemeDomSync, e7 as ThemeManager, e8 as ThemeManagerProps, e9 as ThemeSwitcher, ea as ThemeSwitcherProps, eb as Timeline, ec as TimelineEvent, ed as TimelineProps, ee as Toast, ef as ToastProps, eg as ToastStack, eh as ToastStackProps, ei as ToastStatus, ej as Toggle, ek as ToggleButton, el as ToggleButtonProps, em as ToggleGroup, en as ToggleGroupProps, eo as ToggleProps, ep as Tooltip, eq as TooltipAlign, er as TooltipProps, es as TooltipProvider, et as TooltipProviderProps, eu as TooltipSide, ev as Widget, ew as WidgetProps } from './index-
|
|
1
|
+
export { A as Accordion, a as Alert, b as AlertDialog, c as AlertDialogProps, d as AlertProps, e as AlertStatus, f as AppLayout, g as AppLayoutProps, h as AuthCard, i as AuthCardProps, j as AuthDivider, k as AuthDividerProps, l as AuthLayout, m as AuthLayoutProps, n as Autocomplete, o as AutocompleteOption, p as AutocompleteProps, q as Avatar, r as AvatarGroup, s as AvatarGroupProps, t as AvatarProps, u as AvatarSize, v as AvatarStatus, B as Badge, w as BadgeProps, x as BadgeSize, y as BadgeVariant, z as Banner, C as BannerProps, D as BannerType, E as BreadcrumbItem, F as Breadcrumbs, G as BreadcrumbsProps, H as Button, I as ButtonChrome, J as ButtonChromeProps, K as ButtonGroup, L as ButtonGroupProps, M as ButtonProps, N as ButtonShape, O as ButtonSize, P as ButtonVariant, R as Calendar, S as CanonicalIconName, T as Caption, U as Card, V as CardProps, W as CardVariant, X as ChatBubble, Y as ChatBubbleProps, Z as ChatBubbleVariant, _ as Checkbox, $ as CheckboxProps, a0 as Chip, a1 as ChipProps, a2 as CodeBlock, a3 as Collapsible, a4 as CollapsibleProps, a5 as CollapsibleSection, a6 as Combobox, a7 as ComboboxOption, a8 as ComboboxProps, a9 as CommandPalette, aa as ComponentDocs, ab as ComponentDocsProps, ac as ComponentPropRow, ad as ContextMenu, ae as ContextMenuItem, af as ContextMenuProps, ag as DataTable, ah as DataTableColumn, ai as DataTableProps, aj as DatePicker, ak as DatePickerProps, al as Dialog, am as DialogProps, an as Display, ao as Divider, ap as DividerProps, aq as Dot, ar as DotProps, as as Drawer, at as DrawerProps, au as DrawerSide, av as DrawerSize, aw as DropdownAlign, ax as DropdownButton, ay as DropdownButtonProps, az as DropdownItem, aA as DropdownItemProps, aB as DropdownMenu, aC as DropdownMenuProps, aD as DropdownRadioGroup, aE as DropdownRadioGroupProps, aF as DropdownRadioItem, aG as DropdownRadioItemProps, aH as DropdownSide, aI as EmptyState, aJ as FileUpload, aK as FileUploadProps, aL as FilterBar, aM as FilterBarProps, aN as FilterChip, aO as FilterChips, aP as FilterChipsProps, aQ as FilterControls, aR as FilterControlsProps, aS as FilterMenu, aT as FilterMenuOption, aU as FilterMenuProps, aV as FormField, aW as FormFieldControlProps, aX as FormFieldProps, aY as H1, aZ as H2, a_ as H3, a$ as H4, b0 as H5, b1 as HoverCard, b7 as Icon, b3 as IconAliasName, bc as IconByName, bN as IconName, bU as IconProps, cj as Indicator, ck as IndicatorPosition, cl as IndicatorProps, cm as Input, cn as InputGroup, co as InputGroupProps, cp as InputProps, cq as InputSize, cr as InputVariant, cs as Kbd, ct as KbdPlatform, cu as KbdProps, cv as KbdVariant, cw as Label, cx as Lead, cy as Lettermark, cz as LettermarkProps, cA as Link, cB as LinkProps, cC as Loader, cD as LoaderProps, cE as LoaderSize, cF as LoaderVariant, cG as LoadingBar, cH as LoadingBarProps, cI as LoadingState, cJ as LoadingStateProps, cK as Menubar, cL as MenubarItem, cM as MenubarProps, cN as Metric, cO as MetricProps, cP as Modal, cQ as ModalProps, cR as ModalSize, cS as Mono, cT as NumberField, cU as NumberFieldProps, cW as Overline, cX as P, c_ as Pagination, c$ as PaginationProps, d0 as Panel, d1 as PanelProps, d2 as Popover, d3 as PopoverProps, d4 as Progress, d5 as ProgressCircle, d6 as ProgressCircleProps, d7 as ProgressProps, d8 as Radio, d9 as RadioProps, da as Range, db as RangeProps, dc as Rating, dd as RatingProps, de as Resizable, df as ResizableProps, dg as Row, dh as RowProps, di as ScrollArea, dj as ScrollAreaProps, dk as SearchGroup, dl as SearchGroupProps, dm as SearchInput, dn as SearchInputProps, dp as SegmentedControl, dq as Select, dr as SelectProps, ds as SettingsLayout, dt as SettingsLayoutProps, du as SettingsNav, dv as SettingsNavGroup, dw as SettingsNavItem, dx as SettingsNavProps, dy as ShowcaseWrapper, dz as Sidebar, dA as SidebarGroup, dB as SidebarItemDef, dC as SidebarProps, dD as Skeleton, dE as SkeletonProps, dF as SkeletonShape, dG as Small, dH as Snack, dI as SnackProps, dJ as SortMenu, dK as SortMenuProps, dL as Spinner, dM as SpinnerProps, dN as Splotch, dO as SplotchColor, dP as SplotchProps, dQ as Stat, dR as StatProps, dS as StatTone, dT as Stepper, dU as TabItem, dV as Table, dW as TableColumn, dX as TableProps, dY as Tabs, dZ as TabsProps, d_ as TabsVariant, d$ as Tag, e0 as TagProps, e1 as TagType, e2 as Terminal, e3 as TerminalProps, e4 as Textarea, e5 as TextareaProps, e6 as ThemeDomSync, e7 as ThemeManager, e8 as ThemeManagerProps, e9 as ThemeSwitcher, ea as ThemeSwitcherProps, eb as Timeline, ec as TimelineEvent, ed as TimelineProps, ee as Toast, ef as ToastProps, eg as ToastStack, eh as ToastStackProps, ei as ToastStatus, ej as Toggle, ek as ToggleButton, el as ToggleButtonProps, em as ToggleGroup, en as ToggleGroupProps, eo as ToggleProps, ep as Tooltip, eq as TooltipAlign, er as TooltipProps, es as TooltipProvider, et as TooltipProviderProps, eu as TooltipSide, ev as Widget, ew as WidgetProps } from './index-Od4pIP4F.mjs';
|
|
2
2
|
import 'react';
|
|
3
3
|
import '@radix-ui/react-dropdown-menu';
|
package/dist/ui.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { A as Accordion, a as Alert, b as AlertDialog, c as AlertDialogProps, d as AlertProps, e as AlertStatus, f as AppLayout, g as AppLayoutProps, h as AuthCard, i as AuthCardProps, j as AuthDivider, k as AuthDividerProps, l as AuthLayout, m as AuthLayoutProps, n as Autocomplete, o as AutocompleteOption, p as AutocompleteProps, q as Avatar, r as AvatarGroup, s as AvatarGroupProps, t as AvatarProps, u as AvatarSize, v as AvatarStatus, B as Badge, w as BadgeProps, x as BadgeSize, y as BadgeVariant, z as Banner, C as BannerProps, D as BannerType, E as BreadcrumbItem, F as Breadcrumbs, G as BreadcrumbsProps, H as Button, I as ButtonChrome, J as ButtonChromeProps, K as ButtonGroup, L as ButtonGroupProps, M as ButtonProps, N as ButtonShape, O as ButtonSize, P as ButtonVariant, R as Calendar, S as CanonicalIconName, T as Caption, U as Card, V as CardProps, W as CardVariant, X as ChatBubble, Y as ChatBubbleProps, Z as ChatBubbleVariant, _ as Checkbox, $ as CheckboxProps, a0 as Chip, a1 as ChipProps, a2 as CodeBlock, a3 as Collapsible, a4 as CollapsibleProps, a5 as CollapsibleSection, a6 as Combobox, a7 as ComboboxOption, a8 as ComboboxProps, a9 as CommandPalette, aa as ComponentDocs, ab as ComponentDocsProps, ac as ComponentPropRow, ad as ContextMenu, ae as ContextMenuItem, af as ContextMenuProps, ag as DataTable, ah as DataTableColumn, ai as DataTableProps, aj as DatePicker, ak as DatePickerProps, al as Dialog, am as DialogProps, an as Display, ao as Divider, ap as DividerProps, aq as Dot, ar as DotProps, as as Drawer, at as DrawerProps, au as DrawerSide, av as DrawerSize, aw as DropdownAlign, ax as DropdownButton, ay as DropdownButtonProps, az as DropdownItem, aA as DropdownItemProps, aB as DropdownMenu, aC as DropdownMenuProps, aD as DropdownRadioGroup, aE as DropdownRadioGroupProps, aF as DropdownRadioItem, aG as DropdownRadioItemProps, aH as DropdownSide, aI as EmptyState, aJ as FileUpload, aK as FileUploadProps, aL as FilterBar, aM as FilterBarProps, aN as FilterChip, aO as FilterChips, aP as FilterChipsProps, aQ as FilterControls, aR as FilterControlsProps, aS as FilterMenu, aT as FilterMenuOption, aU as FilterMenuProps, aV as FormField, aW as FormFieldControlProps, aX as FormFieldProps, aY as H1, aZ as H2, a_ as H3, a$ as H4, b0 as H5, b1 as HoverCard, b7 as Icon, b3 as IconAliasName, bc as IconByName, bN as IconName, bU as IconProps, cj as Indicator, ck as IndicatorPosition, cl as IndicatorProps, cm as Input, cn as InputGroup, co as InputGroupProps, cp as InputProps, cq as InputSize, cr as InputVariant, cs as Kbd, ct as KbdPlatform, cu as KbdProps, cv as KbdVariant, cw as Label, cx as Lead, cy as Lettermark, cz as LettermarkProps, cA as Link, cB as LinkProps, cC as Loader, cD as LoaderProps, cE as LoaderSize, cF as LoaderVariant, cG as LoadingBar, cH as LoadingBarProps, cI as LoadingState, cJ as LoadingStateProps, cK as Menubar, cL as MenubarItem, cM as MenubarProps, cN as Metric, cO as MetricProps, cP as Modal, cQ as ModalProps, cR as ModalSize, cS as Mono, cT as NumberField, cU as NumberFieldProps, cW as Overline, cX as P, c_ as Pagination, c$ as PaginationProps, d0 as Panel, d1 as PanelProps, d2 as Popover, d3 as PopoverProps, d4 as Progress, d5 as ProgressCircle, d6 as ProgressCircleProps, d7 as ProgressProps, d8 as Radio, d9 as RadioProps, da as Range, db as RangeProps, dc as Rating, dd as RatingProps, de as Resizable, df as ResizableProps, dg as Row, dh as RowProps, di as ScrollArea, dj as ScrollAreaProps, dk as SearchGroup, dl as SearchGroupProps, dm as SearchInput, dn as SearchInputProps, dp as SegmentedControl, dq as Select, dr as SelectProps, ds as SettingsLayout, dt as SettingsLayoutProps, du as SettingsNav, dv as SettingsNavGroup, dw as SettingsNavItem, dx as SettingsNavProps, dy as ShowcaseWrapper, dz as Sidebar, dA as SidebarGroup, dB as SidebarItemDef, dC as SidebarProps, dD as Skeleton, dE as SkeletonProps, dF as SkeletonShape, dG as Small, dH as Snack, dI as SnackProps, dJ as SortMenu, dK as SortMenuProps, dL as Spinner, dM as SpinnerProps, dN as Splotch, dO as SplotchColor, dP as SplotchProps, dQ as Stat, dR as StatProps, dS as StatTone, dT as Stepper, dU as TabItem, dV as Table, dW as TableColumn, dX as TableProps, dY as Tabs, dZ as TabsProps, d_ as TabsVariant, d$ as Tag, e0 as TagProps, e1 as TagType, e2 as Terminal, e3 as TerminalProps, e4 as Textarea, e5 as TextareaProps, e6 as ThemeDomSync, e7 as ThemeManager, e8 as ThemeManagerProps, e9 as ThemeSwitcher, ea as ThemeSwitcherProps, eb as Timeline, ec as TimelineEvent, ed as TimelineProps, ee as Toast, ef as ToastProps, eg as ToastStack, eh as ToastStackProps, ei as ToastStatus, ej as Toggle, ek as ToggleButton, el as ToggleButtonProps, em as ToggleGroup, en as ToggleGroupProps, eo as ToggleProps, ep as Tooltip, eq as TooltipAlign, er as TooltipProps, es as TooltipProvider, et as TooltipProviderProps, eu as TooltipSide, ev as Widget, ew as WidgetProps } from './index-
|
|
1
|
+
export { A as Accordion, a as Alert, b as AlertDialog, c as AlertDialogProps, d as AlertProps, e as AlertStatus, f as AppLayout, g as AppLayoutProps, h as AuthCard, i as AuthCardProps, j as AuthDivider, k as AuthDividerProps, l as AuthLayout, m as AuthLayoutProps, n as Autocomplete, o as AutocompleteOption, p as AutocompleteProps, q as Avatar, r as AvatarGroup, s as AvatarGroupProps, t as AvatarProps, u as AvatarSize, v as AvatarStatus, B as Badge, w as BadgeProps, x as BadgeSize, y as BadgeVariant, z as Banner, C as BannerProps, D as BannerType, E as BreadcrumbItem, F as Breadcrumbs, G as BreadcrumbsProps, H as Button, I as ButtonChrome, J as ButtonChromeProps, K as ButtonGroup, L as ButtonGroupProps, M as ButtonProps, N as ButtonShape, O as ButtonSize, P as ButtonVariant, R as Calendar, S as CanonicalIconName, T as Caption, U as Card, V as CardProps, W as CardVariant, X as ChatBubble, Y as ChatBubbleProps, Z as ChatBubbleVariant, _ as Checkbox, $ as CheckboxProps, a0 as Chip, a1 as ChipProps, a2 as CodeBlock, a3 as Collapsible, a4 as CollapsibleProps, a5 as CollapsibleSection, a6 as Combobox, a7 as ComboboxOption, a8 as ComboboxProps, a9 as CommandPalette, aa as ComponentDocs, ab as ComponentDocsProps, ac as ComponentPropRow, ad as ContextMenu, ae as ContextMenuItem, af as ContextMenuProps, ag as DataTable, ah as DataTableColumn, ai as DataTableProps, aj as DatePicker, ak as DatePickerProps, al as Dialog, am as DialogProps, an as Display, ao as Divider, ap as DividerProps, aq as Dot, ar as DotProps, as as Drawer, at as DrawerProps, au as DrawerSide, av as DrawerSize, aw as DropdownAlign, ax as DropdownButton, ay as DropdownButtonProps, az as DropdownItem, aA as DropdownItemProps, aB as DropdownMenu, aC as DropdownMenuProps, aD as DropdownRadioGroup, aE as DropdownRadioGroupProps, aF as DropdownRadioItem, aG as DropdownRadioItemProps, aH as DropdownSide, aI as EmptyState, aJ as FileUpload, aK as FileUploadProps, aL as FilterBar, aM as FilterBarProps, aN as FilterChip, aO as FilterChips, aP as FilterChipsProps, aQ as FilterControls, aR as FilterControlsProps, aS as FilterMenu, aT as FilterMenuOption, aU as FilterMenuProps, aV as FormField, aW as FormFieldControlProps, aX as FormFieldProps, aY as H1, aZ as H2, a_ as H3, a$ as H4, b0 as H5, b1 as HoverCard, b7 as Icon, b3 as IconAliasName, bc as IconByName, bN as IconName, bU as IconProps, cj as Indicator, ck as IndicatorPosition, cl as IndicatorProps, cm as Input, cn as InputGroup, co as InputGroupProps, cp as InputProps, cq as InputSize, cr as InputVariant, cs as Kbd, ct as KbdPlatform, cu as KbdProps, cv as KbdVariant, cw as Label, cx as Lead, cy as Lettermark, cz as LettermarkProps, cA as Link, cB as LinkProps, cC as Loader, cD as LoaderProps, cE as LoaderSize, cF as LoaderVariant, cG as LoadingBar, cH as LoadingBarProps, cI as LoadingState, cJ as LoadingStateProps, cK as Menubar, cL as MenubarItem, cM as MenubarProps, cN as Metric, cO as MetricProps, cP as Modal, cQ as ModalProps, cR as ModalSize, cS as Mono, cT as NumberField, cU as NumberFieldProps, cW as Overline, cX as P, c_ as Pagination, c$ as PaginationProps, d0 as Panel, d1 as PanelProps, d2 as Popover, d3 as PopoverProps, d4 as Progress, d5 as ProgressCircle, d6 as ProgressCircleProps, d7 as ProgressProps, d8 as Radio, d9 as RadioProps, da as Range, db as RangeProps, dc as Rating, dd as RatingProps, de as Resizable, df as ResizableProps, dg as Row, dh as RowProps, di as ScrollArea, dj as ScrollAreaProps, dk as SearchGroup, dl as SearchGroupProps, dm as SearchInput, dn as SearchInputProps, dp as SegmentedControl, dq as Select, dr as SelectProps, ds as SettingsLayout, dt as SettingsLayoutProps, du as SettingsNav, dv as SettingsNavGroup, dw as SettingsNavItem, dx as SettingsNavProps, dy as ShowcaseWrapper, dz as Sidebar, dA as SidebarGroup, dB as SidebarItemDef, dC as SidebarProps, dD as Skeleton, dE as SkeletonProps, dF as SkeletonShape, dG as Small, dH as Snack, dI as SnackProps, dJ as SortMenu, dK as SortMenuProps, dL as Spinner, dM as SpinnerProps, dN as Splotch, dO as SplotchColor, dP as SplotchProps, dQ as Stat, dR as StatProps, dS as StatTone, dT as Stepper, dU as TabItem, dV as Table, dW as TableColumn, dX as TableProps, dY as Tabs, dZ as TabsProps, d_ as TabsVariant, d$ as Tag, e0 as TagProps, e1 as TagType, e2 as Terminal, e3 as TerminalProps, e4 as Textarea, e5 as TextareaProps, e6 as ThemeDomSync, e7 as ThemeManager, e8 as ThemeManagerProps, e9 as ThemeSwitcher, ea as ThemeSwitcherProps, eb as Timeline, ec as TimelineEvent, ed as TimelineProps, ee as Toast, ef as ToastProps, eg as ToastStack, eh as ToastStackProps, ei as ToastStatus, ej as Toggle, ek as ToggleButton, el as ToggleButtonProps, em as ToggleGroup, en as ToggleGroupProps, eo as ToggleProps, ep as Tooltip, eq as TooltipAlign, er as TooltipProps, es as TooltipProvider, et as TooltipProviderProps, eu as TooltipSide, ev as Widget, ew as WidgetProps } from './index-Od4pIP4F.js';
|
|
2
2
|
import 'react';
|
|
3
3
|
import '@radix-ui/react-dropdown-menu';
|
package/dist/ui.js
CHANGED
|
@@ -1945,10 +1945,16 @@ function Modal({
|
|
|
1945
1945
|
footer,
|
|
1946
1946
|
size = "md",
|
|
1947
1947
|
className,
|
|
1948
|
+
customLayout = false,
|
|
1948
1949
|
showCloseButton = true,
|
|
1949
1950
|
closeOnOutsideClick = true,
|
|
1950
1951
|
closeOnEscape = true,
|
|
1951
|
-
|
|
1952
|
+
dataTest,
|
|
1953
|
+
panelDataTest,
|
|
1954
|
+
zIndex,
|
|
1955
|
+
id,
|
|
1956
|
+
"aria-label": ariaLabel,
|
|
1957
|
+
"aria-labelledby": ariaLabelledBy
|
|
1952
1958
|
}) {
|
|
1953
1959
|
const canDismiss = Boolean(onClose);
|
|
1954
1960
|
const restoreFocusRef = (0, import_react11.useRef)(null);
|
|
@@ -1960,13 +1966,23 @@ function Modal({
|
|
|
1960
1966
|
if (!nextOpen) onClose == null ? void 0 : onClose();
|
|
1961
1967
|
},
|
|
1962
1968
|
children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(Dialog.Portal, { children: [
|
|
1963
|
-
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1964
|
-
|
|
1969
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1970
|
+
Dialog.Overlay,
|
|
1971
|
+
{
|
|
1972
|
+
"data-test": dataTest,
|
|
1973
|
+
className: "ph-modal-overlay",
|
|
1974
|
+
style: zIndex ? { zIndex } : void 0
|
|
1975
|
+
}
|
|
1976
|
+
),
|
|
1977
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1965
1978
|
Dialog.Content,
|
|
1966
|
-
__spreadProps(__spreadValues({
|
|
1967
|
-
|
|
1968
|
-
"
|
|
1969
|
-
|
|
1979
|
+
__spreadProps(__spreadValues(__spreadProps(__spreadValues(__spreadValues({
|
|
1980
|
+
id,
|
|
1981
|
+
"data-test": panelDataTest,
|
|
1982
|
+
className: cn("ph-modal-panel", sizeMap4[size], className)
|
|
1983
|
+
}, ariaLabel ? { "aria-label": ariaLabel } : {}), ariaLabelledBy ? { "aria-labelledby": ariaLabelledBy } : {}), {
|
|
1984
|
+
style: zIndex ? { zIndex } : void 0
|
|
1985
|
+
}), description ? {} : { "aria-describedby": void 0 }), {
|
|
1970
1986
|
onOpenAutoFocus: () => {
|
|
1971
1987
|
restoreFocusRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
1972
1988
|
},
|
|
@@ -1981,18 +1997,29 @@ function Modal({
|
|
|
1981
1997
|
onPointerDownOutside: (event) => {
|
|
1982
1998
|
if (!canDismiss || !closeOnOutsideClick) event.preventDefault();
|
|
1983
1999
|
},
|
|
1984
|
-
children: [
|
|
2000
|
+
children: customLayout ? /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
2001
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Dialog.Title, { className: "sr-only", children: ariaLabel != null ? ariaLabel : "Dialog" }),
|
|
2002
|
+
children
|
|
2003
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
1985
2004
|
title ? null : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Dialog.Title, { className: "sr-only", children: ariaLabel != null ? ariaLabel : "Dialog" }),
|
|
1986
2005
|
title || description || showCloseButton && canDismiss ? /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("header", { className: "ph-modal-header", children: [
|
|
1987
2006
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "min-w-0", children: [
|
|
1988
2007
|
title ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Dialog.Title, { className: "text-lg font-bold text-ph-ink", children: title }) : null,
|
|
1989
2008
|
description ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Dialog.Description, { className: "mt-1 text-sm text-ph-subtle", children: description }) : null
|
|
1990
2009
|
] }),
|
|
1991
|
-
showCloseButton && canDismiss ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Dialog.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
2010
|
+
showCloseButton && canDismiss ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Dialog.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
2011
|
+
"button",
|
|
2012
|
+
{
|
|
2013
|
+
type: "button",
|
|
2014
|
+
className: "ph-modal-close",
|
|
2015
|
+
"aria-label": "Close dialog",
|
|
2016
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(IconClose, { className: "h-5 w-5", "aria-hidden": true })
|
|
2017
|
+
}
|
|
2018
|
+
) }) : null
|
|
1992
2019
|
] }) : null,
|
|
1993
2020
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "ph-modal-body", children }),
|
|
1994
2021
|
footer ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "ph-modal-footer", children: footer }) : null
|
|
1995
|
-
]
|
|
2022
|
+
] })
|
|
1996
2023
|
})
|
|
1997
2024
|
)
|
|
1998
2025
|
] })
|
package/dist/ui.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xenide-io/the-old-ui-theme",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.8",
|
|
4
4
|
"description": "Props-driven React components and theme tokens inspired by classic interface design — optimized for Next.js apps and internal tools.",
|
|
5
5
|
"author": "Xenide",
|
|
6
6
|
"license": "MIT",
|
|
@@ -58,9 +58,13 @@
|
|
|
58
58
|
"files": [
|
|
59
59
|
"dist",
|
|
60
60
|
"src/app/globals.css",
|
|
61
|
-
"src/components",
|
|
61
|
+
"src/components/ui",
|
|
62
|
+
"src/components/charts",
|
|
63
|
+
"src/components/icons",
|
|
62
64
|
"src/suite",
|
|
63
|
-
"src/styles",
|
|
65
|
+
"src/styles/themes.css",
|
|
66
|
+
"src/styles/typography.css",
|
|
67
|
+
"src/styles/suite-skin.css",
|
|
64
68
|
"tailwind-preset.ts"
|
|
65
69
|
],
|
|
66
70
|
"scripts": {
|
|
@@ -16,10 +16,16 @@ export interface ModalProps {
|
|
|
16
16
|
footer?: ReactNode;
|
|
17
17
|
size?: ModalSize;
|
|
18
18
|
className?: string;
|
|
19
|
+
customLayout?: boolean;
|
|
19
20
|
showCloseButton?: boolean;
|
|
20
21
|
closeOnOutsideClick?: boolean;
|
|
21
22
|
closeOnEscape?: boolean;
|
|
23
|
+
dataTest?: string;
|
|
24
|
+
panelDataTest?: string;
|
|
25
|
+
zIndex?: number;
|
|
26
|
+
id?: string;
|
|
22
27
|
"aria-label"?: string;
|
|
28
|
+
"aria-labelledby"?: string;
|
|
23
29
|
}
|
|
24
30
|
|
|
25
31
|
const sizeMap: Record<ModalSize, string> = {
|
|
@@ -39,10 +45,16 @@ export function Modal({
|
|
|
39
45
|
footer,
|
|
40
46
|
size = "md",
|
|
41
47
|
className,
|
|
48
|
+
customLayout = false,
|
|
42
49
|
showCloseButton = true,
|
|
43
50
|
closeOnOutsideClick = true,
|
|
44
51
|
closeOnEscape = true,
|
|
52
|
+
dataTest,
|
|
53
|
+
panelDataTest,
|
|
54
|
+
zIndex,
|
|
55
|
+
id,
|
|
45
56
|
"aria-label": ariaLabel,
|
|
57
|
+
"aria-labelledby": ariaLabelledBy,
|
|
46
58
|
}: ModalProps) {
|
|
47
59
|
const canDismiss = Boolean(onClose);
|
|
48
60
|
const restoreFocusRef = useRef<HTMLElement | null>(null);
|
|
@@ -55,15 +67,24 @@ export function Modal({
|
|
|
55
67
|
}}
|
|
56
68
|
>
|
|
57
69
|
<Dialog.Portal>
|
|
58
|
-
<Dialog.Overlay
|
|
70
|
+
<Dialog.Overlay
|
|
71
|
+
data-test={dataTest}
|
|
72
|
+
className="ph-modal-overlay"
|
|
73
|
+
style={zIndex ? { zIndex } : undefined}
|
|
74
|
+
/>
|
|
59
75
|
<Dialog.Content
|
|
76
|
+
id={id}
|
|
77
|
+
data-test={panelDataTest}
|
|
60
78
|
className={cn("ph-modal-panel", sizeMap[size], className)}
|
|
61
|
-
aria-label
|
|
79
|
+
{...(ariaLabel ? { "aria-label": ariaLabel } : {})}
|
|
80
|
+
{...(ariaLabelledBy ? { "aria-labelledby": ariaLabelledBy } : {})}
|
|
81
|
+
style={zIndex ? { zIndex } : undefined}
|
|
62
82
|
{...(description ? {} : { "aria-describedby": undefined })}
|
|
63
83
|
onOpenAutoFocus={() => {
|
|
64
|
-
restoreFocusRef.current =
|
|
65
|
-
|
|
66
|
-
|
|
84
|
+
restoreFocusRef.current =
|
|
85
|
+
document.activeElement instanceof HTMLElement
|
|
86
|
+
? document.activeElement
|
|
87
|
+
: null;
|
|
67
88
|
}}
|
|
68
89
|
onCloseAutoFocus={(event) => {
|
|
69
90
|
event.preventDefault();
|
|
@@ -76,28 +97,51 @@ export function Modal({
|
|
|
76
97
|
if (!canDismiss || !closeOnOutsideClick) event.preventDefault();
|
|
77
98
|
}}
|
|
78
99
|
>
|
|
79
|
-
{
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
100
|
+
{customLayout ? (
|
|
101
|
+
<>
|
|
102
|
+
<Dialog.Title className="sr-only">
|
|
103
|
+
{ariaLabel ?? "Dialog"}
|
|
104
|
+
</Dialog.Title>
|
|
105
|
+
{children}
|
|
106
|
+
</>
|
|
107
|
+
) : (
|
|
108
|
+
<>
|
|
109
|
+
{title ? null : (
|
|
110
|
+
<Dialog.Title className="sr-only">
|
|
111
|
+
{ariaLabel ?? "Dialog"}
|
|
112
|
+
</Dialog.Title>
|
|
113
|
+
)}
|
|
114
|
+
{title || description || (showCloseButton && canDismiss) ? (
|
|
115
|
+
<header className="ph-modal-header">
|
|
116
|
+
<div className="min-w-0">
|
|
117
|
+
{title ? (
|
|
118
|
+
<Dialog.Title className="text-lg font-bold text-ph-ink">
|
|
119
|
+
{title}
|
|
120
|
+
</Dialog.Title>
|
|
121
|
+
) : null}
|
|
122
|
+
{description ? (
|
|
123
|
+
<Dialog.Description className="mt-1 text-sm text-ph-subtle">
|
|
124
|
+
{description}
|
|
125
|
+
</Dialog.Description>
|
|
126
|
+
) : null}
|
|
127
|
+
</div>
|
|
128
|
+
{showCloseButton && canDismiss ? (
|
|
129
|
+
<Dialog.Close asChild>
|
|
130
|
+
<button
|
|
131
|
+
type="button"
|
|
132
|
+
className="ph-modal-close"
|
|
133
|
+
aria-label="Close dialog"
|
|
134
|
+
>
|
|
135
|
+
<IconClose className="h-5 w-5" aria-hidden />
|
|
136
|
+
</button>
|
|
137
|
+
</Dialog.Close>
|
|
138
|
+
) : null}
|
|
139
|
+
</header>
|
|
96
140
|
) : null}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
141
|
+
<div className="ph-modal-body">{children}</div>
|
|
142
|
+
{footer ? <div className="ph-modal-footer">{footer}</div> : null}
|
|
143
|
+
</>
|
|
144
|
+
)}
|
|
101
145
|
</Dialog.Content>
|
|
102
146
|
</Dialog.Portal>
|
|
103
147
|
</Dialog.Root>
|
|
@@ -15,6 +15,34 @@ html {
|
|
|
15
15
|
-webkit-tap-highlight-color: transparent;
|
|
16
16
|
/* App-like vertical scrolling: no rubber-band chaining into the page. */
|
|
17
17
|
overscroll-behavior-y: none;
|
|
18
|
+
/* Spacing scale (4/8/12/16/24/32/48) — Slack / Linear-adjacent. */
|
|
19
|
+
--suite-space-1: 4px;
|
|
20
|
+
--suite-space-2: 8px;
|
|
21
|
+
--suite-space-3: 12px;
|
|
22
|
+
--suite-space-4: 16px;
|
|
23
|
+
--suite-space-5: 24px;
|
|
24
|
+
--suite-space-6: 32px;
|
|
25
|
+
--suite-space-7: 48px;
|
|
26
|
+
--suite-page-pad-x: var(--suite-space-4);
|
|
27
|
+
--suite-page-pad-x-sm: var(--suite-space-5);
|
|
28
|
+
--suite-page-pad-x-lg: var(--suite-space-6);
|
|
29
|
+
--suite-page-pad-y-top: var(--suite-space-2);
|
|
30
|
+
--suite-page-pad-y-top-sm: var(--suite-space-3);
|
|
31
|
+
--suite-page-pad-y-bottom: 20px;
|
|
32
|
+
--suite-page-pad-y-bottom-sm: var(--suite-space-5);
|
|
33
|
+
/* Today needs a calmer opening rhythm than dense workspace screens. */
|
|
34
|
+
--suite-today-pad-y-top: var(--suite-space-4);
|
|
35
|
+
--suite-today-pad-y-top-sm: var(--suite-space-5);
|
|
36
|
+
--suite-section-gap: var(--suite-space-5);
|
|
37
|
+
--suite-header-gap: var(--suite-space-4);
|
|
38
|
+
--suite-content-max: 96rem; /* used only by content/narrow caps, not default pages */
|
|
39
|
+
--suite-reading-max: 48rem; /* ~max-w-3xl / 65ch */
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@media (min-width: 1536px) {
|
|
43
|
+
html {
|
|
44
|
+
--suite-page-pad-x-lg: var(--suite-space-7);
|
|
45
|
+
}
|
|
18
46
|
}
|
|
19
47
|
|
|
20
48
|
body {
|
|
@@ -23,6 +51,239 @@ body {
|
|
|
23
51
|
-webkit-font-smoothing: antialiased;
|
|
24
52
|
}
|
|
25
53
|
|
|
54
|
+
/* Shared page inset — SuitePage + TodayPageFrame (one source of truth). */
|
|
55
|
+
.suite-page-inset {
|
|
56
|
+
padding-left: var(--suite-page-pad-x);
|
|
57
|
+
padding-right: var(--suite-page-pad-x);
|
|
58
|
+
padding-top: var(--suite-page-pad-y-top);
|
|
59
|
+
padding-bottom: var(--suite-page-pad-y-bottom);
|
|
60
|
+
}
|
|
61
|
+
@media (min-width: 640px) {
|
|
62
|
+
.suite-page-inset {
|
|
63
|
+
padding-left: var(--suite-page-pad-x-sm);
|
|
64
|
+
padding-right: var(--suite-page-pad-x-sm);
|
|
65
|
+
padding-top: var(--suite-page-pad-y-top-sm);
|
|
66
|
+
padding-bottom: var(--suite-page-pad-y-bottom-sm);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
@media (min-width: 1024px) {
|
|
70
|
+
.suite-page-inset {
|
|
71
|
+
padding-left: var(--suite-page-pad-x-lg);
|
|
72
|
+
padding-right: var(--suite-page-pad-x-lg);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* Mobile settings tabs bleed to the shared page edge without hard-coded mx/px. */
|
|
77
|
+
.suite-settings-mobile-nav {
|
|
78
|
+
margin-inline: calc(-1 * var(--suite-page-pad-x));
|
|
79
|
+
padding-inline: var(--suite-page-pad-x);
|
|
80
|
+
}
|
|
81
|
+
@media (min-width: 640px) {
|
|
82
|
+
.suite-settings-mobile-nav {
|
|
83
|
+
margin-inline: calc(-1 * var(--suite-page-pad-x-sm));
|
|
84
|
+
padding-inline: var(--suite-page-pad-x-sm);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* Today: extra top inset so the title isn't jammed under the shell. */
|
|
89
|
+
.today-page-frame .suite-page-inset {
|
|
90
|
+
padding-top: var(--suite-today-pad-y-top);
|
|
91
|
+
}
|
|
92
|
+
@media (min-width: 640px) {
|
|
93
|
+
.today-page-frame .suite-page-inset {
|
|
94
|
+
padding-top: var(--suite-today-pad-y-top-sm);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/* Today atmosphere — shared geometry, colours supplied by each app theme. */
|
|
99
|
+
.today-page-frame {
|
|
100
|
+
background-color: var(--ph-canvas);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.today-page-frame__glow {
|
|
104
|
+
background:
|
|
105
|
+
radial-gradient(
|
|
106
|
+
ellipse 130% 80% at 50% -20%,
|
|
107
|
+
color-mix(in srgb, var(--ph-brand) 28%, transparent),
|
|
108
|
+
transparent 58%
|
|
109
|
+
),
|
|
110
|
+
radial-gradient(
|
|
111
|
+
ellipse 80% 55% at 100% 0%,
|
|
112
|
+
color-mix(in srgb, var(--ph-accent) 18%, transparent),
|
|
113
|
+
transparent 48%
|
|
114
|
+
),
|
|
115
|
+
radial-gradient(
|
|
116
|
+
ellipse 70% 50% at 0% 8%,
|
|
117
|
+
color-mix(in srgb, var(--ph-violet, var(--ph-brand)) 20%, transparent),
|
|
118
|
+
transparent 46%
|
|
119
|
+
),
|
|
120
|
+
radial-gradient(
|
|
121
|
+
ellipse 60% 40% at 70% 35%,
|
|
122
|
+
color-mix(in srgb, var(--ph-brand) 10%, transparent),
|
|
123
|
+
transparent 55%
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.today-page-frame__top-fade {
|
|
128
|
+
background: linear-gradient(
|
|
129
|
+
to bottom,
|
|
130
|
+
color-mix(in srgb, var(--ph-brand) 18%, var(--ph-canvas)),
|
|
131
|
+
color-mix(in srgb, var(--ph-canvas) 45%, transparent),
|
|
132
|
+
transparent
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.today-page-frame__cloud {
|
|
137
|
+
background: color-mix(in srgb, var(--ph-surface) 48%, transparent);
|
|
138
|
+
filter: blur(2px);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.today-page-frame__cloud--2 {
|
|
142
|
+
background: color-mix(in srgb, var(--ph-brand) 10%, var(--ph-surface));
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.today-page-frame__cloud--4 {
|
|
146
|
+
background: color-mix(in srgb, var(--ph-accent) 8%, var(--ph-surface));
|
|
147
|
+
opacity: 0.85;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.today-page-frame__cloud--5 {
|
|
151
|
+
background: color-mix(in srgb, var(--ph-surface) 36%, transparent);
|
|
152
|
+
opacity: 0.75;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
html.dark .today-page-frame__cloud {
|
|
156
|
+
background: color-mix(in srgb, var(--ph-surface) 22%, transparent);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
html.dark .today-page-frame__cloud--2 {
|
|
160
|
+
background: color-mix(in srgb, var(--ph-brand) 8%, var(--ph-surface));
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/* Today primary action — compact geometry, colour supplied by the app theme. */
|
|
164
|
+
.today-primary-action {
|
|
165
|
+
color: var(--ph-ink);
|
|
166
|
+
background: color-mix(in oklab, var(--ph-brand) 12%, var(--ph-surface));
|
|
167
|
+
border: 1px solid color-mix(in oklab, var(--ph-brand) 28%, var(--ph-border));
|
|
168
|
+
box-shadow: 0 1px 0 color-mix(in oklab, var(--ph-brand) 8%, transparent);
|
|
169
|
+
}
|
|
170
|
+
.today-primary-action:hover {
|
|
171
|
+
background: color-mix(in oklab, var(--ph-brand) 18%, var(--ph-surface));
|
|
172
|
+
border-color: color-mix(in oklab, var(--ph-brand) 40%, var(--ph-border));
|
|
173
|
+
}
|
|
174
|
+
.today-primary-action__icon {
|
|
175
|
+
background: color-mix(in oklab, var(--ph-brand) 22%, var(--ph-surface));
|
|
176
|
+
color: var(--ph-brand);
|
|
177
|
+
}
|
|
178
|
+
.today-primary-action--turtletime {
|
|
179
|
+
background: color-mix(in oklab, #2d6a4f 14%, var(--ph-surface));
|
|
180
|
+
border-color: color-mix(in oklab, #2d6a4f 32%, var(--ph-border));
|
|
181
|
+
}
|
|
182
|
+
.today-primary-action--turtletime .today-primary-action__icon {
|
|
183
|
+
background: color-mix(in oklab, #2d6a4f 24%, var(--ph-surface));
|
|
184
|
+
color: #1b4332;
|
|
185
|
+
}
|
|
186
|
+
.today-primary-action--tides {
|
|
187
|
+
background: color-mix(in oklab, var(--ph-brand) 14%, var(--ph-surface));
|
|
188
|
+
}
|
|
189
|
+
.today-primary-action--kraken {
|
|
190
|
+
background: color-mix(
|
|
191
|
+
in oklab,
|
|
192
|
+
var(--ph-violet, var(--ph-brand)) 14%,
|
|
193
|
+
var(--ph-surface)
|
|
194
|
+
);
|
|
195
|
+
border-color: color-mix(
|
|
196
|
+
in oklab,
|
|
197
|
+
var(--ph-violet, var(--ph-brand)) 32%,
|
|
198
|
+
var(--ph-border)
|
|
199
|
+
);
|
|
200
|
+
}
|
|
201
|
+
.today-primary-action--kraken .today-primary-action__icon {
|
|
202
|
+
background: color-mix(
|
|
203
|
+
in oklab,
|
|
204
|
+
var(--ph-violet, var(--ph-brand)) 22%,
|
|
205
|
+
var(--ph-surface)
|
|
206
|
+
);
|
|
207
|
+
color: var(--ph-violet, var(--ph-brand));
|
|
208
|
+
}
|
|
209
|
+
.today-primary-action--shellstack {
|
|
210
|
+
background: color-mix(in oklab, var(--ph-ink) 6%, var(--ph-surface));
|
|
211
|
+
}
|
|
212
|
+
.today-primary-action--active .today-primary-action__icon {
|
|
213
|
+
background: var(--ph-brand);
|
|
214
|
+
color: var(--ph-canvas);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/* Desktop sticky page title chrome (SuitePageHeader sticky). */
|
|
218
|
+
.suite-page-header-sticky {
|
|
219
|
+
position: sticky;
|
|
220
|
+
top: 0;
|
|
221
|
+
z-index: 20;
|
|
222
|
+
margin-left: calc(-1 * var(--suite-page-pad-x));
|
|
223
|
+
margin-right: calc(-1 * var(--suite-page-pad-x));
|
|
224
|
+
padding-left: var(--suite-page-pad-x);
|
|
225
|
+
padding-right: var(--suite-page-pad-x);
|
|
226
|
+
background: color-mix(in oklab, var(--ph-canvas) 88%, transparent);
|
|
227
|
+
-webkit-backdrop-filter: blur(12px) saturate(1.4);
|
|
228
|
+
backdrop-filter: blur(12px) saturate(1.4);
|
|
229
|
+
border-bottom: 1px solid transparent;
|
|
230
|
+
transition: border-color 160ms ease;
|
|
231
|
+
}
|
|
232
|
+
@media (min-width: 640px) {
|
|
233
|
+
.suite-page-header-sticky {
|
|
234
|
+
margin-left: calc(-1 * var(--suite-page-pad-x-sm));
|
|
235
|
+
margin-right: calc(-1 * var(--suite-page-pad-x-sm));
|
|
236
|
+
padding-left: var(--suite-page-pad-x-sm);
|
|
237
|
+
padding-right: var(--suite-page-pad-x-sm);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
@media (min-width: 1024px) {
|
|
241
|
+
.suite-page-header-sticky {
|
|
242
|
+
margin-left: calc(-1 * var(--suite-page-pad-x-lg));
|
|
243
|
+
margin-right: calc(-1 * var(--suite-page-pad-x-lg));
|
|
244
|
+
padding-left: var(--suite-page-pad-x-lg);
|
|
245
|
+
padding-right: var(--suite-page-pad-x-lg);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
.suite-page-header-sticky[data-stuck="true"] {
|
|
249
|
+
border-bottom-color: var(--ph-border-subtle);
|
|
250
|
+
/* Only when pinned under the scroll edge — keeps resting titles aligned. */
|
|
251
|
+
padding-top: var(--suite-space-2);
|
|
252
|
+
}
|
|
253
|
+
@supports not (backdrop-filter: blur(1px)) {
|
|
254
|
+
.suite-page-header-sticky {
|
|
255
|
+
background: var(--ph-canvas);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/* Page stage — ONE layout standard for every suite app.
|
|
260
|
+
- Default width="full": use the full main column (no max-width centring)
|
|
261
|
+
- Always use suite-page-inset for title baseline (top + left)
|
|
262
|
+
- Never nest SuitePage inside SuitePage
|
|
263
|
+
- width="content" | "narrow" | "reading" only when a page truly needs a
|
|
264
|
+
reading measure (e.g. Ask). "wide" is an alias of full. */
|
|
265
|
+
.suite-page-stage {
|
|
266
|
+
width: 100%;
|
|
267
|
+
max-width: var(--suite-page-max, none);
|
|
268
|
+
margin-inline: auto;
|
|
269
|
+
}
|
|
270
|
+
.suite-page-stage[data-width="full"],
|
|
271
|
+
.suite-page-stage[data-width="wide"] {
|
|
272
|
+
--suite-page-max: none;
|
|
273
|
+
}
|
|
274
|
+
.suite-page-stage[data-width="content"] {
|
|
275
|
+
--suite-page-max: 72rem; /* ~max-w-6xl */
|
|
276
|
+
}
|
|
277
|
+
.suite-page-stage[data-width="narrow"] {
|
|
278
|
+
--suite-page-max: 56rem; /* ~max-w-4xl */
|
|
279
|
+
}
|
|
280
|
+
.suite-page-stage[data-width="reading"] {
|
|
281
|
+
--suite-page-max: var(--suite-reading-max);
|
|
282
|
+
}
|
|
283
|
+
.suite-reading-measure {
|
|
284
|
+
max-width: var(--suite-reading-max);
|
|
285
|
+
}
|
|
286
|
+
|
|
26
287
|
/* ── Cards ──────────────────────────────────────────────────────────────
|
|
27
288
|
The MASTER spec: 12px radius, resting elevation, hover lift, and a
|
|
28
289
|
visible press state. Shadows are mixed from the theme's text colour
|
|
@@ -125,7 +386,7 @@ button:hover > .ph-card {
|
|
|
125
386
|
will-change: transform;
|
|
126
387
|
}
|
|
127
388
|
.suite-bottom-nav__indicator::before {
|
|
128
|
-
content:
|
|
389
|
+
content: "";
|
|
129
390
|
position: absolute;
|
|
130
391
|
inset: 0 5px;
|
|
131
392
|
border-radius: 0.9rem;
|
|
@@ -138,22 +399,17 @@ button:hover > .ph-card {
|
|
|
138
399
|
color: var(--ph-accent);
|
|
139
400
|
}
|
|
140
401
|
|
|
141
|
-
/* ── Today hero: one-shot
|
|
142
|
-
|
|
143
|
-
Runs once per message change — never loops, so no battery cost. */
|
|
402
|
+
/* ── Today hero: short one-shot fade ────────────────────────────────────
|
|
403
|
+
Keep the entrance calm — Slack-like briefing, not a marketing hero. */
|
|
144
404
|
.today-hero {
|
|
145
|
-
animation: today-hero-enter
|
|
405
|
+
animation: today-hero-enter 220ms ease-out both;
|
|
146
406
|
}
|
|
147
407
|
@keyframes today-hero-enter {
|
|
148
408
|
from {
|
|
149
409
|
opacity: 0;
|
|
150
|
-
transform: translateY(10px);
|
|
151
|
-
letter-spacing: 0.01em;
|
|
152
410
|
}
|
|
153
411
|
to {
|
|
154
412
|
opacity: 1;
|
|
155
|
-
transform: translateY(0);
|
|
156
|
-
letter-spacing: normal;
|
|
157
413
|
}
|
|
158
414
|
}
|
|
159
415
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -162,20 +418,6 @@ button:hover > .ph-card {
|
|
|
162
418
|
}
|
|
163
419
|
}
|
|
164
420
|
|
|
165
|
-
/* ── Today frame: mobile perf ───────────────────────────────────────────
|
|
166
|
-
blur-3xl + infinite pulse is a GPU/battery hog on phones. Keep the
|
|
167
|
-
atmosphere on tablet/desktop; flatten it on small screens. */
|
|
168
|
-
@media (max-width: 767px) {
|
|
169
|
-
.today-page-frame__sun {
|
|
170
|
-
filter: none;
|
|
171
|
-
opacity: 0.28;
|
|
172
|
-
animation: none;
|
|
173
|
-
}
|
|
174
|
-
.today-page-frame__cloud {
|
|
175
|
-
display: none;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
|
|
179
421
|
/* ── Mobile bottom sheets ───────────────────────────────────────────────
|
|
180
422
|
Below lg, every ph-modal becomes a sheet pinned to the bottom edge —
|
|
181
423
|
the native phone/tablet pattern (Apple HIG, Material 3). Desktop keeps
|
|
@@ -197,7 +439,7 @@ button:hover > .ph-card {
|
|
|
197
439
|
}
|
|
198
440
|
/* Grabber — first in-flow child, so it sits above flush header rows. */
|
|
199
441
|
.ph-modal-panel::before {
|
|
200
|
-
content:
|
|
442
|
+
content: "";
|
|
201
443
|
display: block;
|
|
202
444
|
flex: none;
|
|
203
445
|
width: 36px;
|
|
@@ -233,6 +475,24 @@ button:hover > .ph-card {
|
|
|
233
475
|
-webkit-overflow-scrolling: touch;
|
|
234
476
|
}
|
|
235
477
|
|
|
478
|
+
/* ── Auth / OAuth / launch handoff ──────────────────────────────────────
|
|
479
|
+
One calm opacity fade — no stacked entrance reveals on bridge pages. */
|
|
480
|
+
.suite-auth-handoff {
|
|
481
|
+
opacity: 0;
|
|
482
|
+
animation: suite-auth-handoff-fade 250ms ease-out forwards;
|
|
483
|
+
}
|
|
484
|
+
@keyframes suite-auth-handoff-fade {
|
|
485
|
+
to {
|
|
486
|
+
opacity: 1;
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
@media (prefers-reduced-motion: reduce) {
|
|
490
|
+
.suite-auth-handoff {
|
|
491
|
+
opacity: 1;
|
|
492
|
+
animation: none;
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
|
|
236
496
|
/* ── Reduced motion: every skin animation honours it ──────────────────── */
|
|
237
497
|
@media (prefers-reduced-motion: reduce) {
|
|
238
498
|
.ph-card,
|