@xenide-io/the-old-ui-theme 0.9.17 → 0.10.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.
Files changed (70) hide show
  1. package/dist/{Chip-BzuNgJIa.d.mts → Chip-DKT-82Lf.d.mts} +5 -3
  2. package/dist/{Chip-BzuNgJIa.d.ts → Chip-DKT-82Lf.d.ts} +5 -3
  3. package/dist/{chunk-6SVJAU5K.mjs → chunk-LHE4ROON.mjs} +977 -521
  4. package/dist/index.d.mts +2 -2
  5. package/dist/index.d.ts +2 -2
  6. package/dist/index.js +138 -99
  7. package/dist/index.mjs +1 -1
  8. package/dist/suite.d.mts +23 -1
  9. package/dist/suite.d.ts +23 -1
  10. package/dist/suite.js +4250 -4041
  11. package/dist/suite.mjs +1008 -795
  12. package/dist/tailwind-preset.js +10 -1
  13. package/dist/tailwind-preset.mjs +10 -1
  14. package/dist/ui.d.mts +33 -4
  15. package/dist/ui.d.ts +33 -4
  16. package/dist/ui.js +1024 -566
  17. package/dist/ui.mjs +13 -1
  18. package/docs/macos-identity-audit.md +279 -0
  19. package/package.json +1 -1
  20. package/src/app/globals.css +334 -44
  21. package/src/components/ui/Accordion.tsx +4 -7
  22. package/src/components/ui/Avatar.tsx +5 -5
  23. package/src/components/ui/Calendar.tsx +7 -7
  24. package/src/components/ui/CodeBlock.tsx +3 -10
  25. package/src/components/ui/CollapsibleSection.tsx +4 -4
  26. package/src/components/ui/CommandPalette.tsx +7 -10
  27. package/src/components/ui/EmptyState.tsx +2 -2
  28. package/src/components/ui/Input.tsx +1 -1
  29. package/src/components/ui/Marketing.tsx +128 -0
  30. package/src/components/ui/MarketingIllustrations.tsx +287 -0
  31. package/src/components/ui/Panel.tsx +1 -1
  32. package/src/components/ui/SegmentedControl.tsx +59 -13
  33. package/src/components/ui/ShowcaseWrapper.tsx +3 -3
  34. package/src/components/ui/Table.tsx +18 -6
  35. package/src/components/ui/Typography.tsx +4 -4
  36. package/src/components/ui/avatar-stat.test.tsx +14 -1
  37. package/src/components/ui/index.ts +13 -12
  38. package/src/components/ui/interaction-primitives.test.tsx +12 -6
  39. package/src/components/ui/marketing.test.tsx +39 -0
  40. package/src/components/ui/table.test.tsx +20 -0
  41. package/src/styles/suite-skin.css +405 -40
  42. package/src/styles/themes.css +45 -45
  43. package/src/styles/typography.css +25 -1
  44. package/src/suite/components/ai-panel.tsx +17 -17
  45. package/src/suite/components/app-switcher.tsx +9 -9
  46. package/src/suite/components/suite-app-layout.tsx +7 -4
  47. package/src/suite/components/suite-bottom-nav.tsx +1 -1
  48. package/src/suite/components/suite-clients-projects-directory.tsx +6 -6
  49. package/src/suite/components/suite-entity-icon.tsx +3 -3
  50. package/src/suite/components/suite-integration-picker.tsx +7 -7
  51. package/src/suite/components/suite-integration-rules.tsx +5 -5
  52. package/src/suite/components/suite-layout.test.tsx +32 -3
  53. package/src/suite/components/suite-layout.tsx +4 -4
  54. package/src/suite/components/suite-mobile-drawer.tsx +2 -2
  55. package/src/suite/components/suite-mobile-header.tsx +1 -1
  56. package/src/suite/components/suite-notification-bell.tsx +4 -4
  57. package/src/suite/components/suite-notification-settings.tsx +171 -0
  58. package/src/suite/components/suite-palette-library.test.tsx +46 -0
  59. package/src/suite/components/suite-palette-library.tsx +82 -15
  60. package/src/suite/components/suite-settings-layout.tsx +2 -2
  61. package/src/suite/components/suite-settings-mobile-nav.tsx +5 -9
  62. package/src/suite/components/suite-sidebar.test.tsx +39 -0
  63. package/src/suite/components/suite-sidebar.tsx +41 -19
  64. package/src/suite/components/suite-skeleton.tsx +6 -6
  65. package/src/suite/components/suite-user-menu.tsx +2 -2
  66. package/src/suite/components/today-calibrating.tsx +3 -3
  67. package/src/suite/components/today-ui.tsx +12 -12
  68. package/src/suite/components/workspace-switcher.tsx +3 -3
  69. package/src/suite/index.ts +6 -0
  70. package/tailwind-preset.ts +9 -0
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { bm as IconProps } from './Chip-BzuNgJIa.mjs';
2
- export { A as Accordion, a as AccordionItem, b as AccordionProps, c as Alert, d as AlertProps, e as AlertStatus, f as AuthCard, g as AuthCardProps, h as AuthDivider, i as AuthDividerProps, j as AuthLayout, k as AuthLayoutProps, l as Avatar, m as AvatarGroup, n as AvatarGroupProps, o as AvatarProps, p as AvatarSize, q as AvatarStatus, B as Badge, r as BadgeProps, s as BadgeSize, t as BadgeVariant, u as Button, v as ButtonChrome, w as ButtonChromeProps, x as ButtonProps, y as ButtonShape, z as ButtonSize, C as ButtonVariant, D as CANONICAL_ICONS, E as Calendar, F as CalendarProps, G as CanonicalIconName, H as Caption, I as CaptionProps, J as Card, K as CardProps, L as CardVariant, M as Checkbox, N as CheckboxProps, O as Chip, P as ChipProps, Q as CommandItem, R as CommandPalette, S as CommandPaletteProps, T as Display, U as DisplayProps, V as Dot, W as DotProps, X as DropdownAlign, Y as DropdownButton, Z as DropdownButtonProps, _ as DropdownItem, $ as DropdownItemProps, a0 as DropdownMenu, a1 as DropdownMenuProps, a2 as DropdownRadioGroup, a3 as DropdownRadioGroupProps, a4 as DropdownRadioItem, a5 as DropdownRadioItemProps, a6 as DropdownSide, a7 as EmptyState, a8 as EmptyStateProps, a9 as FileUpload, aa as FileUploadProps, ab as FilterBar, ac as FilterBarProps, ad as FilterChip, ae as FilterChips, af as FilterChipsProps, ag as FilterMenu, ah as FilterMenuOption, ai as FilterMenuProps, aj as FormField, ak as FormFieldControlProps, al as FormFieldProps, am as H1, an as H1Props, ao as H2, ap as H2Props, aq as H3, ar as H3Props, as as H4, at as H4Props, au as H5, av as H5Props, aB as Icon, aw as IconActivity, ax as IconAliasName, ay as IconAreaChart, az as IconArrowDown, aA as IconArrowUp, aB as IconBase, aC as IconBell, aD as IconBellOff, aE as IconBolt, aF as IconBox, aG as IconByName, aH as IconCancel, aI as IconCheck, aJ as IconCheckCircle, aK as IconChevronDown, aL as IconChevronLeft, aM as IconChevronRight, aN as IconClipboardEdit, aO as IconClose, aP as IconCodePreview, aQ as IconCohort, aR as IconCommandCursor, aS as IconCopy, aT as IconCumulativeChart, aU as IconDataReel, aV as IconDatabase, aW as IconDownload, aX as IconEdit, aY as IconErrorOutline, aZ as IconEventStream, a_ as IconExclamation, a$ as IconExperimentSplit, b0 as IconFeatureGate, b1 as IconFlag, b2 as IconFlare, b3 as IconFlask, b4 as IconGift, b5 as IconGridView, b6 as IconHandClick, b7 as IconHome, b8 as IconInfo, b9 as IconInsightBoard, ba as IconLayers, bb as IconListView, bc as IconLogout, bd as IconMail, be as IconMoon, bf as IconName, bg as IconOldWindow, bh as IconPanelRight, bi as IconPerson, bj as IconPlayCircle, bk as IconPlus, bl as IconPremium, bn as IconQueryEditor, bo as IconQueryStack, bp as IconRadar, bq as IconRecording, br as IconReplayFrame, bs as IconRobot, bt as IconRocket, bu as IconSave, bv as IconSearch, bw as IconSelectEvents, bx as IconShoppingCart, by as IconSpinner, bz as IconStar, bA as IconSubArrowRight, bB as IconSun, bC as IconSurveyCard, bD as IconSurveys, bE as IconSync, bF as IconTableChart, bG as IconTerminal, bH as IconToggle, bI as IconTrash, bJ as IconTuning, bK as IconUpload, bL as IconVolume, bM as IconVolumeOff, bN as Input, bO as InputProps, bP as InputSize, bQ as InputVariant, bR as Kbd, bS as KbdPlatform, bT as KbdProps, bU as KbdVariant, bV as Label, bW as LabelProps, bX as Lead, bY as LeadProps, bZ as Link, b_ as LinkProps, b$ as Loader, c0 as LoaderProps, c1 as LoaderSize, c2 as LoaderVariant, c3 as LoadingState, c4 as LoadingStateProps, c5 as Modal, c6 as ModalProps, c7 as ModalSize, c8 as Mono, c9 as MonoProps, ca as OLD_UI_ICONS, cb as Overline, cc as OverlineProps, cd as P, ce as PH_ICONS, cf as PH_ICON_ALIASES, cg as PProps, ch as Panel, ci as PanelProps, cj as Progress, ck as ProgressProps, cl as Radio, cm as RadioProps, cr as SearchInput, cs as SearchInputProps, ct as SectionTitle, cu as SectionTitleProps, cv as SegmentedControl, cw as SegmentedControlOption, cx as SegmentedControlProps, cy as Select, cz as SelectProps, cA as SettingsLayout, cB as SettingsLayoutProps, cC as SettingsNav, cD as SettingsNavGroup, cE as SettingsNavItem, cF as SettingsNavProps, cG as Skeleton, cH as SkeletonProps, cI as SkeletonShape, cJ as Small, cK as SmallProps, cL as SortMenu, cM as SortMenuProps, cN as Spinner, cO as SpinnerProps, cP as Stat, cQ as StatProps, cR as StatTone, cS as Table, cT as TableColumn, cU as TableProps, cV as TextBaseProps, cW as TextTone, cX as TextWeight, cY as Textarea, cZ as TextareaProps, c_ as ThemeDomSync, c$ as ThemeSwitcher, d0 as ThemeSwitcherProps, d1 as Toggle, d2 as ToggleProps, d3 as Tooltip, d4 as TooltipAlign, d5 as TooltipProps, d6 as TooltipProvider, d7 as TooltipProviderProps, d8 as TooltipSide } from './Chip-BzuNgJIa.mjs';
1
+ import { bm as IconProps } from './Chip-DKT-82Lf.mjs';
2
+ export { A as Accordion, a as AccordionItem, b as AccordionProps, c as Alert, d as AlertProps, e as AlertStatus, f as AuthCard, g as AuthCardProps, h as AuthDivider, i as AuthDividerProps, j as AuthLayout, k as AuthLayoutProps, l as Avatar, m as AvatarGroup, n as AvatarGroupProps, o as AvatarProps, p as AvatarSize, q as AvatarStatus, B as Badge, r as BadgeProps, s as BadgeSize, t as BadgeVariant, u as Button, v as ButtonChrome, w as ButtonChromeProps, x as ButtonProps, y as ButtonShape, z as ButtonSize, C as ButtonVariant, D as CANONICAL_ICONS, E as Calendar, F as CalendarProps, G as CanonicalIconName, H as Caption, I as CaptionProps, J as Card, K as CardProps, L as CardVariant, M as Checkbox, N as CheckboxProps, O as Chip, P as ChipProps, Q as CommandItem, R as CommandPalette, S as CommandPaletteProps, T as Display, U as DisplayProps, V as Dot, W as DotProps, X as DropdownAlign, Y as DropdownButton, Z as DropdownButtonProps, _ as DropdownItem, $ as DropdownItemProps, a0 as DropdownMenu, a1 as DropdownMenuProps, a2 as DropdownRadioGroup, a3 as DropdownRadioGroupProps, a4 as DropdownRadioItem, a5 as DropdownRadioItemProps, a6 as DropdownSide, a7 as EmptyState, a8 as EmptyStateProps, a9 as FileUpload, aa as FileUploadProps, ab as FilterBar, ac as FilterBarProps, ad as FilterChip, ae as FilterChips, af as FilterChipsProps, ag as FilterMenu, ah as FilterMenuOption, ai as FilterMenuProps, aj as FormField, ak as FormFieldControlProps, al as FormFieldProps, am as H1, an as H1Props, ao as H2, ap as H2Props, aq as H3, ar as H3Props, as as H4, at as H4Props, au as H5, av as H5Props, aB as Icon, aw as IconActivity, ax as IconAliasName, ay as IconAreaChart, az as IconArrowDown, aA as IconArrowUp, aB as IconBase, aC as IconBell, aD as IconBellOff, aE as IconBolt, aF as IconBox, aG as IconByName, aH as IconCancel, aI as IconCheck, aJ as IconCheckCircle, aK as IconChevronDown, aL as IconChevronLeft, aM as IconChevronRight, aN as IconClipboardEdit, aO as IconClose, aP as IconCodePreview, aQ as IconCohort, aR as IconCommandCursor, aS as IconCopy, aT as IconCumulativeChart, aU as IconDataReel, aV as IconDatabase, aW as IconDownload, aX as IconEdit, aY as IconErrorOutline, aZ as IconEventStream, a_ as IconExclamation, a$ as IconExperimentSplit, b0 as IconFeatureGate, b1 as IconFlag, b2 as IconFlare, b3 as IconFlask, b4 as IconGift, b5 as IconGridView, b6 as IconHandClick, b7 as IconHome, b8 as IconInfo, b9 as IconInsightBoard, ba as IconLayers, bb as IconListView, bc as IconLogout, bd as IconMail, be as IconMoon, bf as IconName, bg as IconOldWindow, bh as IconPanelRight, bi as IconPerson, bj as IconPlayCircle, bk as IconPlus, bl as IconPremium, bn as IconQueryEditor, bo as IconQueryStack, bp as IconRadar, bq as IconRecording, br as IconReplayFrame, bs as IconRobot, bt as IconRocket, bu as IconSave, bv as IconSearch, bw as IconSelectEvents, bx as IconShoppingCart, by as IconSpinner, bz as IconStar, bA as IconSubArrowRight, bB as IconSun, bC as IconSurveyCard, bD as IconSurveys, bE as IconSync, bF as IconTableChart, bG as IconTerminal, bH as IconToggle, bI as IconTrash, bJ as IconTuning, bK as IconUpload, bL as IconVolume, bM as IconVolumeOff, bN as Input, bO as InputProps, bP as InputSize, bQ as InputVariant, bR as Kbd, bS as KbdPlatform, bT as KbdProps, bU as KbdVariant, bV as Label, bW as LabelProps, bX as Lead, bY as LeadProps, bZ as Link, b_ as LinkProps, b$ as Loader, c0 as LoaderProps, c1 as LoaderSize, c2 as LoaderVariant, c3 as LoadingState, c4 as LoadingStateProps, c5 as Modal, c6 as ModalProps, c7 as ModalSize, c8 as Mono, c9 as MonoProps, ca as OLD_UI_ICONS, cb as Overline, cc as OverlineProps, cd as P, ce as PH_ICONS, cf as PH_ICON_ALIASES, cg as PProps, ch as Panel, ci as PanelProps, cj as Progress, ck as ProgressProps, cl as Radio, cm as RadioProps, cr as SearchInput, cs as SearchInputProps, ct as SectionTitle, cu as SectionTitleProps, cv as SegmentedControl, cw as SegmentedControlOption, cx as SegmentedControlProps, cy as Select, cz as SelectProps, cA as SettingsLayout, cB as SettingsLayoutProps, cC as SettingsNav, cD as SettingsNavGroup, cE as SettingsNavItem, cF as SettingsNavProps, cG as Skeleton, cH as SkeletonProps, cI as SkeletonShape, cJ as Small, cK as SmallProps, cL as SortMenu, cM as SortMenuProps, cN as Spinner, cO as SpinnerProps, cP as Stat, cQ as StatProps, cR as StatTone, cS as Table, cT as TableColumn, cU as TableProps, cV as TextBaseProps, cW as TextTone, cX as TextWeight, cY as Textarea, cZ as TextareaProps, c_ as ThemeDomSync, c$ as ThemeSwitcher, d0 as ThemeSwitcherProps, d1 as Toggle, d2 as ToggleProps, d3 as Tooltip, d4 as TooltipAlign, d5 as TooltipProps, d6 as TooltipProvider, d7 as TooltipProviderProps, d8 as TooltipSide } from './Chip-DKT-82Lf.mjs';
3
3
  import * as react from 'react';
4
4
  import { ReactNode } from 'react';
5
5
  import '@radix-ui/react-dropdown-menu';
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { bm as IconProps } from './Chip-BzuNgJIa.js';
2
- export { A as Accordion, a as AccordionItem, b as AccordionProps, c as Alert, d as AlertProps, e as AlertStatus, f as AuthCard, g as AuthCardProps, h as AuthDivider, i as AuthDividerProps, j as AuthLayout, k as AuthLayoutProps, l as Avatar, m as AvatarGroup, n as AvatarGroupProps, o as AvatarProps, p as AvatarSize, q as AvatarStatus, B as Badge, r as BadgeProps, s as BadgeSize, t as BadgeVariant, u as Button, v as ButtonChrome, w as ButtonChromeProps, x as ButtonProps, y as ButtonShape, z as ButtonSize, C as ButtonVariant, D as CANONICAL_ICONS, E as Calendar, F as CalendarProps, G as CanonicalIconName, H as Caption, I as CaptionProps, J as Card, K as CardProps, L as CardVariant, M as Checkbox, N as CheckboxProps, O as Chip, P as ChipProps, Q as CommandItem, R as CommandPalette, S as CommandPaletteProps, T as Display, U as DisplayProps, V as Dot, W as DotProps, X as DropdownAlign, Y as DropdownButton, Z as DropdownButtonProps, _ as DropdownItem, $ as DropdownItemProps, a0 as DropdownMenu, a1 as DropdownMenuProps, a2 as DropdownRadioGroup, a3 as DropdownRadioGroupProps, a4 as DropdownRadioItem, a5 as DropdownRadioItemProps, a6 as DropdownSide, a7 as EmptyState, a8 as EmptyStateProps, a9 as FileUpload, aa as FileUploadProps, ab as FilterBar, ac as FilterBarProps, ad as FilterChip, ae as FilterChips, af as FilterChipsProps, ag as FilterMenu, ah as FilterMenuOption, ai as FilterMenuProps, aj as FormField, ak as FormFieldControlProps, al as FormFieldProps, am as H1, an as H1Props, ao as H2, ap as H2Props, aq as H3, ar as H3Props, as as H4, at as H4Props, au as H5, av as H5Props, aB as Icon, aw as IconActivity, ax as IconAliasName, ay as IconAreaChart, az as IconArrowDown, aA as IconArrowUp, aB as IconBase, aC as IconBell, aD as IconBellOff, aE as IconBolt, aF as IconBox, aG as IconByName, aH as IconCancel, aI as IconCheck, aJ as IconCheckCircle, aK as IconChevronDown, aL as IconChevronLeft, aM as IconChevronRight, aN as IconClipboardEdit, aO as IconClose, aP as IconCodePreview, aQ as IconCohort, aR as IconCommandCursor, aS as IconCopy, aT as IconCumulativeChart, aU as IconDataReel, aV as IconDatabase, aW as IconDownload, aX as IconEdit, aY as IconErrorOutline, aZ as IconEventStream, a_ as IconExclamation, a$ as IconExperimentSplit, b0 as IconFeatureGate, b1 as IconFlag, b2 as IconFlare, b3 as IconFlask, b4 as IconGift, b5 as IconGridView, b6 as IconHandClick, b7 as IconHome, b8 as IconInfo, b9 as IconInsightBoard, ba as IconLayers, bb as IconListView, bc as IconLogout, bd as IconMail, be as IconMoon, bf as IconName, bg as IconOldWindow, bh as IconPanelRight, bi as IconPerson, bj as IconPlayCircle, bk as IconPlus, bl as IconPremium, bn as IconQueryEditor, bo as IconQueryStack, bp as IconRadar, bq as IconRecording, br as IconReplayFrame, bs as IconRobot, bt as IconRocket, bu as IconSave, bv as IconSearch, bw as IconSelectEvents, bx as IconShoppingCart, by as IconSpinner, bz as IconStar, bA as IconSubArrowRight, bB as IconSun, bC as IconSurveyCard, bD as IconSurveys, bE as IconSync, bF as IconTableChart, bG as IconTerminal, bH as IconToggle, bI as IconTrash, bJ as IconTuning, bK as IconUpload, bL as IconVolume, bM as IconVolumeOff, bN as Input, bO as InputProps, bP as InputSize, bQ as InputVariant, bR as Kbd, bS as KbdPlatform, bT as KbdProps, bU as KbdVariant, bV as Label, bW as LabelProps, bX as Lead, bY as LeadProps, bZ as Link, b_ as LinkProps, b$ as Loader, c0 as LoaderProps, c1 as LoaderSize, c2 as LoaderVariant, c3 as LoadingState, c4 as LoadingStateProps, c5 as Modal, c6 as ModalProps, c7 as ModalSize, c8 as Mono, c9 as MonoProps, ca as OLD_UI_ICONS, cb as Overline, cc as OverlineProps, cd as P, ce as PH_ICONS, cf as PH_ICON_ALIASES, cg as PProps, ch as Panel, ci as PanelProps, cj as Progress, ck as ProgressProps, cl as Radio, cm as RadioProps, cr as SearchInput, cs as SearchInputProps, ct as SectionTitle, cu as SectionTitleProps, cv as SegmentedControl, cw as SegmentedControlOption, cx as SegmentedControlProps, cy as Select, cz as SelectProps, cA as SettingsLayout, cB as SettingsLayoutProps, cC as SettingsNav, cD as SettingsNavGroup, cE as SettingsNavItem, cF as SettingsNavProps, cG as Skeleton, cH as SkeletonProps, cI as SkeletonShape, cJ as Small, cK as SmallProps, cL as SortMenu, cM as SortMenuProps, cN as Spinner, cO as SpinnerProps, cP as Stat, cQ as StatProps, cR as StatTone, cS as Table, cT as TableColumn, cU as TableProps, cV as TextBaseProps, cW as TextTone, cX as TextWeight, cY as Textarea, cZ as TextareaProps, c_ as ThemeDomSync, c$ as ThemeSwitcher, d0 as ThemeSwitcherProps, d1 as Toggle, d2 as ToggleProps, d3 as Tooltip, d4 as TooltipAlign, d5 as TooltipProps, d6 as TooltipProvider, d7 as TooltipProviderProps, d8 as TooltipSide } from './Chip-BzuNgJIa.js';
1
+ import { bm as IconProps } from './Chip-DKT-82Lf.js';
2
+ export { A as Accordion, a as AccordionItem, b as AccordionProps, c as Alert, d as AlertProps, e as AlertStatus, f as AuthCard, g as AuthCardProps, h as AuthDivider, i as AuthDividerProps, j as AuthLayout, k as AuthLayoutProps, l as Avatar, m as AvatarGroup, n as AvatarGroupProps, o as AvatarProps, p as AvatarSize, q as AvatarStatus, B as Badge, r as BadgeProps, s as BadgeSize, t as BadgeVariant, u as Button, v as ButtonChrome, w as ButtonChromeProps, x as ButtonProps, y as ButtonShape, z as ButtonSize, C as ButtonVariant, D as CANONICAL_ICONS, E as Calendar, F as CalendarProps, G as CanonicalIconName, H as Caption, I as CaptionProps, J as Card, K as CardProps, L as CardVariant, M as Checkbox, N as CheckboxProps, O as Chip, P as ChipProps, Q as CommandItem, R as CommandPalette, S as CommandPaletteProps, T as Display, U as DisplayProps, V as Dot, W as DotProps, X as DropdownAlign, Y as DropdownButton, Z as DropdownButtonProps, _ as DropdownItem, $ as DropdownItemProps, a0 as DropdownMenu, a1 as DropdownMenuProps, a2 as DropdownRadioGroup, a3 as DropdownRadioGroupProps, a4 as DropdownRadioItem, a5 as DropdownRadioItemProps, a6 as DropdownSide, a7 as EmptyState, a8 as EmptyStateProps, a9 as FileUpload, aa as FileUploadProps, ab as FilterBar, ac as FilterBarProps, ad as FilterChip, ae as FilterChips, af as FilterChipsProps, ag as FilterMenu, ah as FilterMenuOption, ai as FilterMenuProps, aj as FormField, ak as FormFieldControlProps, al as FormFieldProps, am as H1, an as H1Props, ao as H2, ap as H2Props, aq as H3, ar as H3Props, as as H4, at as H4Props, au as H5, av as H5Props, aB as Icon, aw as IconActivity, ax as IconAliasName, ay as IconAreaChart, az as IconArrowDown, aA as IconArrowUp, aB as IconBase, aC as IconBell, aD as IconBellOff, aE as IconBolt, aF as IconBox, aG as IconByName, aH as IconCancel, aI as IconCheck, aJ as IconCheckCircle, aK as IconChevronDown, aL as IconChevronLeft, aM as IconChevronRight, aN as IconClipboardEdit, aO as IconClose, aP as IconCodePreview, aQ as IconCohort, aR as IconCommandCursor, aS as IconCopy, aT as IconCumulativeChart, aU as IconDataReel, aV as IconDatabase, aW as IconDownload, aX as IconEdit, aY as IconErrorOutline, aZ as IconEventStream, a_ as IconExclamation, a$ as IconExperimentSplit, b0 as IconFeatureGate, b1 as IconFlag, b2 as IconFlare, b3 as IconFlask, b4 as IconGift, b5 as IconGridView, b6 as IconHandClick, b7 as IconHome, b8 as IconInfo, b9 as IconInsightBoard, ba as IconLayers, bb as IconListView, bc as IconLogout, bd as IconMail, be as IconMoon, bf as IconName, bg as IconOldWindow, bh as IconPanelRight, bi as IconPerson, bj as IconPlayCircle, bk as IconPlus, bl as IconPremium, bn as IconQueryEditor, bo as IconQueryStack, bp as IconRadar, bq as IconRecording, br as IconReplayFrame, bs as IconRobot, bt as IconRocket, bu as IconSave, bv as IconSearch, bw as IconSelectEvents, bx as IconShoppingCart, by as IconSpinner, bz as IconStar, bA as IconSubArrowRight, bB as IconSun, bC as IconSurveyCard, bD as IconSurveys, bE as IconSync, bF as IconTableChart, bG as IconTerminal, bH as IconToggle, bI as IconTrash, bJ as IconTuning, bK as IconUpload, bL as IconVolume, bM as IconVolumeOff, bN as Input, bO as InputProps, bP as InputSize, bQ as InputVariant, bR as Kbd, bS as KbdPlatform, bT as KbdProps, bU as KbdVariant, bV as Label, bW as LabelProps, bX as Lead, bY as LeadProps, bZ as Link, b_ as LinkProps, b$ as Loader, c0 as LoaderProps, c1 as LoaderSize, c2 as LoaderVariant, c3 as LoadingState, c4 as LoadingStateProps, c5 as Modal, c6 as ModalProps, c7 as ModalSize, c8 as Mono, c9 as MonoProps, ca as OLD_UI_ICONS, cb as Overline, cc as OverlineProps, cd as P, ce as PH_ICONS, cf as PH_ICON_ALIASES, cg as PProps, ch as Panel, ci as PanelProps, cj as Progress, ck as ProgressProps, cl as Radio, cm as RadioProps, cr as SearchInput, cs as SearchInputProps, ct as SectionTitle, cu as SectionTitleProps, cv as SegmentedControl, cw as SegmentedControlOption, cx as SegmentedControlProps, cy as Select, cz as SelectProps, cA as SettingsLayout, cB as SettingsLayoutProps, cC as SettingsNav, cD as SettingsNavGroup, cE as SettingsNavItem, cF as SettingsNavProps, cG as Skeleton, cH as SkeletonProps, cI as SkeletonShape, cJ as Small, cK as SmallProps, cL as SortMenu, cM as SortMenuProps, cN as Spinner, cO as SpinnerProps, cP as Stat, cQ as StatProps, cR as StatTone, cS as Table, cT as TableColumn, cU as TableProps, cV as TextBaseProps, cW as TextTone, cX as TextWeight, cY as Textarea, cZ as TextareaProps, c_ as ThemeDomSync, c$ as ThemeSwitcher, d0 as ThemeSwitcherProps, d1 as Toggle, d2 as ToggleProps, d3 as Tooltip, d4 as TooltipAlign, d5 as TooltipProps, d6 as TooltipProvider, d7 as TooltipProviderProps, d8 as TooltipSide } from './Chip-DKT-82Lf.js';
3
3
  import * as react from 'react';
4
4
  import { ReactNode } from 'react';
5
5
  import '@radix-ui/react-dropdown-menu';
package/dist/index.js CHANGED
@@ -1789,7 +1789,7 @@ var Input = (0, import_react10.forwardRef)(function Input2(_a, ref) {
1789
1789
  "aria-label": revealed ? "Hide password" : "Show password",
1790
1790
  "aria-pressed": revealed,
1791
1791
  disabled,
1792
- className: "absolute inset-y-0 right-0 flex w-10 items-center justify-center rounded-r-[var(--ph-radius-control)] text-ph-mutedtext transition-colors hover:text-ph-ink focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ph-focus disabled:opacity-40",
1792
+ className: "ph-field-icon-button",
1793
1793
  children: revealed ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_iconoir_react.EyeClosed, { className: "h-4 w-4", "aria-hidden": true }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_iconoir_react.Eye, { className: "h-4 w-4", "aria-hidden": true })
1794
1794
  }
1795
1795
  ) : null
@@ -2179,7 +2179,7 @@ var import_jsx_runtime17 = require("react/jsx-runtime");
2179
2179
  function Panel(_a) {
2180
2180
  var _b = _a, { title, description, children, className } = _b, props = __objRest(_b, ["title", "description", "children", "className"]);
2181
2181
  return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", __spreadProps(__spreadValues({ className: cn("ph-panel", className) }, props), { children: [
2182
- title && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("h3", { className: "text-sm font-semibold uppercase tracking-wider text-ph-mutedtext", children: title }),
2182
+ title && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("h3", { className: "text-lg font-semibold tracking-tight text-ph-ink", children: title }),
2183
2183
  description && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-sm text-ph-subtle", children: description }),
2184
2184
  children
2185
2185
  ] }));
@@ -2251,17 +2251,20 @@ function Table({
2251
2251
  getRowStyle,
2252
2252
  getRowKey,
2253
2253
  className,
2254
- caption
2254
+ caption,
2255
+ emptyState = "No data available."
2255
2256
  }) {
2256
2257
  return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2257
2258
  "div",
2258
2259
  {
2259
2260
  className: cn("ph-table-wrap", compact && "ph-table-compact", className),
2261
+ role: "region",
2262
+ "aria-label": caption != null ? caption : "Data table",
2260
2263
  tabIndex: 0,
2261
2264
  children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("table", { className: cn("ph-table", zebra && "ph-table-zebra", ribbon && "ph-table--ribbon"), children: [
2262
2265
  caption && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("caption", { className: "sr-only", children: caption }),
2263
2266
  /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("tr", { children: columns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("th", { className: col.className, children: col.header }, col.key)) }) }),
2264
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("tbody", { children: data.map((row, i) => {
2267
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("tbody", { children: data.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("tr", { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("td", { colSpan: columns.length, className: "ph-table-empty", children: emptyState }) }) : data.map((row, i) => {
2265
2268
  var _a;
2266
2269
  return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("tr", { style: getRowStyle == null ? void 0 : getRowStyle(row), children: columns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("td", { className: col.className, children: col.cell(row) }, col.key)) }, (_a = getRowKey == null ? void 0 : getRowKey(row, i)) != null ? _a : i);
2267
2270
  }) })
@@ -2512,14 +2515,11 @@ function Accordion({
2512
2515
  return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2513
2516
  "div",
2514
2517
  {
2515
- className: cn(
2516
- "divide-y divide-ph-border rounded-xl border border-ph-border bg-ph-surface",
2517
- className
2518
- ),
2518
+ className: cn("ph-accordion", className),
2519
2519
  children: items.map((item) => {
2520
2520
  const isOpen = openItems.has(item.id);
2521
2521
  const contentId = `accordion-${idPrefix}-${item.id}-content`;
2522
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "first:rounded-t-xl last:rounded-b-xl", children: [
2522
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "ph-accordion__item", children: [
2523
2523
  /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
2524
2524
  "button",
2525
2525
  {
@@ -2527,7 +2527,7 @@ function Accordion({
2527
2527
  onClick: () => toggleItem(item.id),
2528
2528
  "aria-expanded": isOpen,
2529
2529
  "aria-controls": contentId,
2530
- className: "flex w-full items-center justify-between px-5 py-4 text-left transition hover:bg-ph-muted",
2530
+ className: "ph-accordion__trigger",
2531
2531
  children: [
2532
2532
  /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "font-semibold text-ph-ink", children: item.title }),
2533
2533
  /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
@@ -2551,7 +2551,7 @@ function Accordion({
2551
2551
  if (node) node.toggleAttribute("inert", !isOpen);
2552
2552
  },
2553
2553
  className: cn(
2554
- "grid transition-all duration-200",
2554
+ "grid transition-[grid-template-rows] duration-200",
2555
2555
  isOpen ? "grid-rows-[1fr]" : "grid-rows-[0fr]"
2556
2556
  ),
2557
2557
  children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "px-5 pb-4 text-ph-subtle", children: item.content }) })
@@ -2564,27 +2564,68 @@ function Accordion({
2564
2564
  }
2565
2565
 
2566
2566
  // src/components/ui/SegmentedControl.tsx
2567
+ var import_react16 = require("react");
2567
2568
  var import_jsx_runtime23 = require("react/jsx-runtime");
2568
- function SegmentedControl({ options, value, onChange, className }) {
2569
+ function SegmentedControl({
2570
+ options,
2571
+ value,
2572
+ onChange,
2573
+ className,
2574
+ "aria-label": ariaLabel
2575
+ }) {
2576
+ const itemRefs = (0, import_react16.useRef)([]);
2577
+ const selectedIndex = options.findIndex((option) => option.value === value);
2578
+ const handleKeyDown = (event, index) => {
2579
+ var _a;
2580
+ let nextIndex;
2581
+ switch (event.key) {
2582
+ case "ArrowLeft":
2583
+ case "ArrowUp":
2584
+ nextIndex = (index - 1 + options.length) % options.length;
2585
+ break;
2586
+ case "ArrowRight":
2587
+ case "ArrowDown":
2588
+ nextIndex = (index + 1) % options.length;
2589
+ break;
2590
+ case "Home":
2591
+ nextIndex = 0;
2592
+ break;
2593
+ case "End":
2594
+ nextIndex = options.length - 1;
2595
+ break;
2596
+ default:
2597
+ return;
2598
+ }
2599
+ event.preventDefault();
2600
+ const nextOption = options[nextIndex];
2601
+ if (!nextOption) return;
2602
+ onChange(nextOption.value);
2603
+ (_a = itemRefs.current[nextIndex]) == null ? void 0 : _a.focus();
2604
+ };
2569
2605
  return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2570
2606
  "div",
2571
2607
  {
2572
- className: cn(
2573
- "inline-flex rounded-lg bg-ph-muted p-1",
2574
- className
2575
- ),
2576
- children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
2608
+ role: "radiogroup",
2609
+ "aria-label": ariaLabel,
2610
+ className: cn("ph-segmented-control", className),
2611
+ children: options.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
2577
2612
  "button",
2578
2613
  {
2614
+ ref: (node) => {
2615
+ itemRefs.current[index] = node;
2616
+ },
2579
2617
  type: "button",
2580
- "aria-pressed": value === option.value,
2618
+ role: "radio",
2619
+ "aria-checked": value === option.value,
2620
+ tabIndex: selectedIndex === index || selectedIndex < 0 && index === 0 ? 0 : -1,
2581
2621
  onClick: () => onChange(option.value),
2622
+ onKeyDown: (event) => handleKeyDown(event, index),
2582
2623
  className: cn(
2583
- "relative flex min-h-11 items-center gap-1.5 rounded-md px-3.5 py-1.5 text-sm font-medium transition-all sm:min-h-9",
2584
- value === option.value ? "bg-ph-surface text-ph-ink shadow-ph" : "text-ph-subtle hover:text-ph-ink"
2624
+ "ph-segmented-control__item",
2625
+ value === option.value && "ph-segmented-control__item--selected"
2585
2626
  ),
2586
2627
  children: [
2587
- option.icon && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "h-4 w-4", children: option.icon }),
2628
+ option.icon && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "h-4 w-4", "aria-hidden": true, children: option.icon }),
2588
2629
  option.label
2589
2630
  ]
2590
2631
  },
@@ -2595,7 +2636,7 @@ function SegmentedControl({ options, value, onChange, className }) {
2595
2636
  }
2596
2637
 
2597
2638
  // src/components/ui/CommandPalette.tsx
2598
- var import_react16 = require("react");
2639
+ var import_react17 = require("react");
2599
2640
  var Dialog2 = __toESM(require("@radix-ui/react-dialog"));
2600
2641
  var import_jsx_runtime24 = require("react/jsx-runtime");
2601
2642
  function CommandPalette({
@@ -2609,27 +2650,27 @@ function CommandPalette({
2609
2650
  inputId,
2610
2651
  inputDataTest
2611
2652
  }) {
2612
- const [query, setQuery] = (0, import_react16.useState)("");
2613
- const [selectedIndex, setSelectedIndex] = (0, import_react16.useState)(0);
2614
- const inputRef = (0, import_react16.useRef)(null);
2615
- const listboxRef = (0, import_react16.useRef)(null);
2616
- const restoreFocusRef = (0, import_react16.useRef)(null);
2617
- const generatedId = (0, import_react16.useId)();
2653
+ const [query, setQuery] = (0, import_react17.useState)("");
2654
+ const [selectedIndex, setSelectedIndex] = (0, import_react17.useState)(0);
2655
+ const inputRef = (0, import_react17.useRef)(null);
2656
+ const listboxRef = (0, import_react17.useRef)(null);
2657
+ const restoreFocusRef = (0, import_react17.useRef)(null);
2658
+ const generatedId = (0, import_react17.useId)();
2618
2659
  const listboxId = `${id != null ? id : `command-palette-${generatedId}`}-listbox`;
2619
2660
  const filtered = items.filter(
2620
2661
  (item) => item.label.toLowerCase().includes(query.toLowerCase())
2621
2662
  );
2622
2663
  const activeIndex = filtered.length ? Math.min(selectedIndex, filtered.length - 1) : 0;
2623
2664
  const activeItem = filtered[activeIndex];
2624
- (0, import_react16.useEffect)(() => {
2665
+ (0, import_react17.useEffect)(() => {
2625
2666
  if (!isOpen) return;
2626
2667
  setQuery("");
2627
2668
  setSelectedIndex(0);
2628
2669
  }, [isOpen]);
2629
- (0, import_react16.useEffect)(() => {
2670
+ (0, import_react17.useEffect)(() => {
2630
2671
  setSelectedIndex((current) => Math.min(current, Math.max(filtered.length - 1, 0)));
2631
2672
  }, [filtered.length]);
2632
- (0, import_react16.useEffect)(() => {
2673
+ (0, import_react17.useEffect)(() => {
2633
2674
  var _a, _b;
2634
2675
  if (!isOpen || !activeItem) return;
2635
2676
  (_b = (_a = listboxRef.current) == null ? void 0 : _a.querySelectorAll('[role="option"]')[activeIndex]) == null ? void 0 : _b.scrollIntoView({ block: "nearest" });
@@ -2671,16 +2712,13 @@ function CommandPalette({
2671
2712
  {
2672
2713
  id,
2673
2714
  "data-test": dataTest,
2674
- className: "fixed inset-0 z-50 bg-black/40 backdrop-blur-sm"
2715
+ className: "ph-command-palette__overlay"
2675
2716
  }
2676
2717
  ),
2677
2718
  /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
2678
2719
  Dialog2.Content,
2679
2720
  {
2680
- className: cn(
2681
- "fixed left-1/2 top-[20vh] z-50 w-full max-w-xl -translate-x-1/2 overflow-hidden rounded-xl border border-ph-border bg-ph-surface shadow-ph-md",
2682
- className
2683
- ),
2721
+ className: cn("ph-command-palette", className),
2684
2722
  onOpenAutoFocus: (event) => {
2685
2723
  var _a;
2686
2724
  restoreFocusRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
@@ -2694,7 +2732,7 @@ function CommandPalette({
2694
2732
  },
2695
2733
  children: [
2696
2734
  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Dialog2.Title, { className: "sr-only", children: "Command palette" }),
2697
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center gap-3 border-b border-ph-border px-4 py-3", children: [
2735
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "ph-command-palette__search", children: [
2698
2736
  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(IconSearch, { className: "h-5 w-5 text-ph-mutedtext" }),
2699
2737
  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2700
2738
  "input",
@@ -2719,7 +2757,7 @@ function CommandPalette({
2719
2757
  className: "flex-1 bg-transparent text-ph-ink outline-none placeholder:text-ph-mutedtext"
2720
2758
  }
2721
2759
  ),
2722
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("kbd", { "aria-hidden": "true", className: "rounded border border-ph-border bg-ph-muted px-1.5 py-0.5 text-xs text-ph-mutedtext", children: "ESC" })
2760
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("kbd", { "aria-hidden": "true", className: "ph-keycap", children: "ESC" })
2723
2761
  ] }),
2724
2762
  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { ref: listboxRef, id: listboxId, role: "listbox", "aria-label": "Commands", className: "max-h-[50vh] overflow-y-auto py-2", children: filtered.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { role: "status", className: "px-4 py-8 text-center text-sm text-ph-mutedtext", children: "No results found." }) : filtered.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
2725
2763
  "div",
@@ -2734,13 +2772,13 @@ function CommandPalette({
2734
2772
  },
2735
2773
  onMouseEnter: () => setSelectedIndex(index),
2736
2774
  className: cn(
2737
- "flex w-full cursor-pointer items-center gap-3 px-4 py-2.5 text-left text-sm transition-colors",
2738
- index === activeIndex ? "bg-ph-muted text-ph-ink" : "text-ph-subtle"
2775
+ "ph-command-palette__option",
2776
+ index === activeIndex ? "ph-command-palette__option--selected" : "text-ph-subtle"
2739
2777
  ),
2740
2778
  children: [
2741
2779
  item.icon && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { "aria-hidden": "true", className: "h-5 w-5", children: item.icon }),
2742
2780
  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "flex-1", children: item.label }),
2743
- item.shortcut && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("kbd", { "aria-hidden": "true", className: "rounded border border-ph-border bg-ph-surface px-1.5 py-0.5 text-xs text-ph-mutedtext", children: item.shortcut })
2781
+ item.shortcut && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("kbd", { "aria-hidden": "true", className: "ph-keycap text-ph-mutedtext", children: item.shortcut })
2744
2782
  ]
2745
2783
  },
2746
2784
  item.id
@@ -2754,7 +2792,7 @@ function CommandPalette({
2754
2792
  }
2755
2793
 
2756
2794
  // src/components/ui/Calendar.tsx
2757
- var import_react17 = require("react");
2795
+ var import_react18 = require("react");
2758
2796
  var import_jsx_runtime25 = require("react/jsx-runtime");
2759
2797
  var monthNames = [
2760
2798
  "January",
@@ -2812,19 +2850,19 @@ function dateLabel(date) {
2812
2850
  return `${fullWeekDays[date.getDay()]}, ${date.getDate()} ${monthNames[date.getMonth()]} ${date.getFullYear()}`;
2813
2851
  }
2814
2852
  function Calendar({ value, onChange, className }) {
2815
- const [currentMonth, setCurrentMonth] = (0, import_react17.useState)(() => startOfMonth(value != null ? value : /* @__PURE__ */ new Date()));
2816
- const [focusedDate, setFocusedDate] = (0, import_react17.useState)(() => startOfDay(value != null ? value : /* @__PURE__ */ new Date()));
2817
- const gridRef = (0, import_react17.useRef)(null);
2818
- const shouldFocusDateRef = (0, import_react17.useRef)(false);
2819
- const monthLabelId = (0, import_react17.useId)();
2853
+ const [currentMonth, setCurrentMonth] = (0, import_react18.useState)(() => startOfMonth(value != null ? value : /* @__PURE__ */ new Date()));
2854
+ const [focusedDate, setFocusedDate] = (0, import_react18.useState)(() => startOfDay(value != null ? value : /* @__PURE__ */ new Date()));
2855
+ const gridRef = (0, import_react18.useRef)(null);
2856
+ const shouldFocusDateRef = (0, import_react18.useRef)(false);
2857
+ const monthLabelId = (0, import_react18.useId)();
2820
2858
  const today = startOfDay(/* @__PURE__ */ new Date());
2821
- (0, import_react17.useEffect)(() => {
2859
+ (0, import_react18.useEffect)(() => {
2822
2860
  if (!value) return;
2823
2861
  const nextDate = startOfDay(value);
2824
2862
  setCurrentMonth(startOfMonth(nextDate));
2825
2863
  setFocusedDate(nextDate);
2826
2864
  }, [value]);
2827
- (0, import_react17.useEffect)(() => {
2865
+ (0, import_react18.useEffect)(() => {
2828
2866
  var _a, _b;
2829
2867
  if (!shouldFocusDateRef.current) return;
2830
2868
  (_b = (_a = gridRef.current) == null ? void 0 : _a.querySelector(`[data-date="${dateKey(focusedDate)}"]`)) == null ? void 0 : _b.focus();
@@ -2893,7 +2931,7 @@ function Calendar({ value, onChange, className }) {
2893
2931
  while (days.length < 42) {
2894
2932
  days.push(null);
2895
2933
  }
2896
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: cn("w-[280px] rounded-xl border border-ph-border bg-ph-surface p-4 shadow-ph", className), children: [
2934
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: cn("ph-calendar w-[280px] p-4", className), children: [
2897
2935
  /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "mb-4 flex items-center justify-between", children: [
2898
2936
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2899
2937
  "button",
@@ -2901,7 +2939,7 @@ function Calendar({ value, onChange, className }) {
2901
2939
  type: "button",
2902
2940
  onClick: () => changeMonth(-1),
2903
2941
  "aria-label": "Previous month",
2904
- className: "rounded-lg p-1 text-ph-subtle transition hover:bg-ph-muted hover:text-ph-ink",
2942
+ className: "ph-calendar__nav",
2905
2943
  children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(IconChevronLeft, { className: "h-5 w-5", "aria-hidden": true })
2906
2944
  }
2907
2945
  ),
@@ -2916,7 +2954,7 @@ function Calendar({ value, onChange, className }) {
2916
2954
  type: "button",
2917
2955
  onClick: () => changeMonth(1),
2918
2956
  "aria-label": "Next month",
2919
- className: "rounded-lg p-1 text-ph-subtle transition hover:bg-ph-muted hover:text-ph-ink",
2957
+ className: "ph-calendar__nav",
2920
2958
  children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(IconChevronRight, { className: "h-5 w-5", "aria-hidden": true })
2921
2959
  }
2922
2960
  )
@@ -2953,8 +2991,8 @@ function Calendar({ value, onChange, className }) {
2953
2991
  onClick: () => handleSelect(date),
2954
2992
  onKeyDown: (event) => handleDayKeyDown(event, date),
2955
2993
  className: cn(
2956
- "flex h-full w-full items-center justify-center rounded-lg text-sm transition-colors",
2957
- value && isSameDay(value, date) ? "bg-ph-brand font-semibold text-[var(--ph-on-accent)] shadow-ph" : isSameDay(today, date) ? "bg-ph-muted font-semibold text-ph-brand ring-1 ring-ph-brand/30" : "text-ph-ink hover:bg-ph-muted"
2994
+ "ph-calendar__day",
2995
+ value && isSameDay(value, date) ? "ph-calendar__day--selected" : isSameDay(today, date) ? "ph-calendar__day--today" : void 0
2958
2996
  ),
2959
2997
  children: date.getDate()
2960
2998
  }
@@ -2969,10 +3007,10 @@ function Calendar({ value, onChange, className }) {
2969
3007
  }
2970
3008
 
2971
3009
  // src/components/ui/Tooltip.tsx
2972
- var import_react18 = require("react");
3010
+ var import_react19 = require("react");
2973
3011
  var import_react_dom = require("react-dom");
2974
3012
  var import_jsx_runtime26 = require("react/jsx-runtime");
2975
- var TooltipDelayContext = (0, import_react18.createContext)(0);
3013
+ var TooltipDelayContext = (0, import_react19.createContext)(0);
2976
3014
  function TooltipProvider({
2977
3015
  children,
2978
3016
  delayDuration = 0
@@ -3004,13 +3042,13 @@ function Tooltip({
3004
3042
  delayDuration,
3005
3043
  disableHoverableContent = false
3006
3044
  }) {
3007
- const providerDelay = (0, import_react18.useContext)(TooltipDelayContext);
3008
- const generatedId = (0, import_react18.useId)().replace(/:/g, "");
3009
- const triggerRef = (0, import_react18.useRef)(null);
3010
- const contentRef = (0, import_react18.useRef)(null);
3011
- const timerRef = (0, import_react18.useRef)(null);
3012
- const [internalOpen, setInternalOpen] = (0, import_react18.useState)(defaultOpen);
3013
- const [position, setPosition] = (0, import_react18.useState)(null);
3045
+ const providerDelay = (0, import_react19.useContext)(TooltipDelayContext);
3046
+ const generatedId = (0, import_react19.useId)().replace(/:/g, "");
3047
+ const triggerRef = (0, import_react19.useRef)(null);
3048
+ const contentRef = (0, import_react19.useRef)(null);
3049
+ const timerRef = (0, import_react19.useRef)(null);
3050
+ const [internalOpen, setInternalOpen] = (0, import_react19.useState)(defaultOpen);
3051
+ const [position, setPosition] = (0, import_react19.useState)(null);
3014
3052
  const isOpen = open != null ? open : internalOpen;
3015
3053
  const triggerId = children.props.id;
3016
3054
  const tooltipId = triggerId ? `${triggerId}-tooltip` : `ph-tooltip-${generatedId}`;
@@ -3022,7 +3060,7 @@ function Tooltip({
3022
3060
  if (timerRef.current) clearTimeout(timerRef.current);
3023
3061
  timerRef.current = null;
3024
3062
  }
3025
- const updatePosition = (0, import_react18.useCallback)(() => {
3063
+ const updatePosition = (0, import_react19.useCallback)(() => {
3026
3064
  if (!triggerRef.current || !contentRef.current) return;
3027
3065
  setPosition(
3028
3066
  tooltipPosition(
@@ -3054,10 +3092,10 @@ function Tooltip({
3054
3092
  clearTimer();
3055
3093
  timerRef.current = setTimeout(() => setOpen(false), 100);
3056
3094
  }
3057
- (0, import_react18.useLayoutEffect)(() => {
3095
+ (0, import_react19.useLayoutEffect)(() => {
3058
3096
  if (isOpen) updatePosition();
3059
3097
  }, [isOpen, updatePosition]);
3060
- (0, import_react18.useEffect)(() => {
3098
+ (0, import_react19.useEffect)(() => {
3061
3099
  if (!isOpen) return;
3062
3100
  const reposition = () => updatePosition();
3063
3101
  window.addEventListener("resize", reposition);
@@ -3067,9 +3105,9 @@ function Tooltip({
3067
3105
  window.removeEventListener("scroll", reposition, true);
3068
3106
  };
3069
3107
  }, [isOpen, updatePosition]);
3070
- (0, import_react18.useEffect)(() => () => clearTimer(), []);
3108
+ (0, import_react19.useEffect)(() => () => clearTimer(), []);
3071
3109
  const describedBy = [children.props["aria-describedby"], tooltipId].filter(Boolean).join(" ");
3072
- const trigger = (0, import_react18.cloneElement)(children, { "aria-describedby": describedBy });
3110
+ const trigger = (0, import_react19.cloneElement)(children, { "aria-describedby": describedBy });
3073
3111
  return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_jsx_runtime26.Fragment, { children: [
3074
3112
  /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
3075
3113
  "span",
@@ -3123,11 +3161,11 @@ function EmptyState({ icon, title, description, action, className }) {
3123
3161
  "div",
3124
3162
  {
3125
3163
  className: cn(
3126
- "flex flex-col items-center justify-center rounded-xl border border-dashed border-ph-border bg-ph-muted/50 px-8 py-16 text-center",
3164
+ "ph-empty-state",
3127
3165
  className
3128
3166
  ),
3129
3167
  children: [
3130
- icon && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-ph-muted text-ph-mutedtext", children: icon }),
3168
+ icon && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "ph-empty-state__icon", children: icon }),
3131
3169
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("h2", { className: "text-base font-semibold text-ph-ink", children: title }),
3132
3170
  description && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { className: "mt-1 max-w-sm text-sm text-ph-subtle", children: description }),
3133
3171
  action && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "mt-4", children: action })
@@ -3304,7 +3342,7 @@ function getOptionText(option) {
3304
3342
  }
3305
3343
 
3306
3344
  // src/components/ui/Typography.tsx
3307
- var import_react19 = require("react");
3345
+ var import_react20 = require("react");
3308
3346
  var import_jsx_runtime30 = require("react/jsx-runtime");
3309
3347
  var toneMap2 = {
3310
3348
  default: "text-ph-ink",
@@ -3327,64 +3365,65 @@ var weightMap = {
3327
3365
  function textClass(base, tone, weight, truncate, className) {
3328
3366
  return cn(base, toneMap2[tone], weight && weightMap[weight], truncate && "truncate", className);
3329
3367
  }
3330
- var Display = (0, import_react19.forwardRef)(function Display2(_a, ref) {
3368
+ var Display = (0, import_react20.forwardRef)(function Display2(_a, ref) {
3331
3369
  var _b = _a, { children, tone = "default", weight, truncate, className } = _b, props = __objRest(_b, ["children", "tone", "weight", "truncate", "className"]);
3332
3370
  return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("h1", __spreadProps(__spreadValues({ ref }, props), { className: textClass("ph-hero-title", tone, weight, truncate, className), children }));
3333
3371
  });
3334
- var SectionTitle = (0, import_react19.forwardRef)(function SectionTitle2(_a, ref) {
3372
+ var SectionTitle = (0, import_react20.forwardRef)(function SectionTitle2(_a, ref) {
3335
3373
  var _b = _a, { children, tone = "default", weight, truncate, className } = _b, props = __objRest(_b, ["children", "tone", "weight", "truncate", "className"]);
3336
3374
  return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("h2", __spreadProps(__spreadValues({ ref }, props), { className: textClass("ph-section-title", tone, weight, truncate, className), children }));
3337
3375
  });
3338
- var H1 = (0, import_react19.forwardRef)(function H12(_a, ref) {
3376
+ var H1 = (0, import_react20.forwardRef)(function H12(_a, ref) {
3339
3377
  var _b = _a, { children, tone = "default", weight, truncate, className } = _b, props = __objRest(_b, ["children", "tone", "weight", "truncate", "className"]);
3340
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("h1", __spreadProps(__spreadValues({ ref }, props), { className: textClass("text-3xl font-bold tracking-tight md:text-4xl", tone, weight, truncate, className), children }));
3378
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("h1", __spreadProps(__spreadValues({ ref }, props), { className: textClass("ph-page-title font-bold", tone, weight, truncate, className), children }));
3341
3379
  });
3342
- var H2 = (0, import_react19.forwardRef)(function H22(_a, ref) {
3380
+ var H2 = (0, import_react20.forwardRef)(function H22(_a, ref) {
3343
3381
  var _b = _a, { children, tone = "default", weight, truncate, className } = _b, props = __objRest(_b, ["children", "tone", "weight", "truncate", "className"]);
3344
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("h2", __spreadProps(__spreadValues({ ref }, props), { className: textClass("text-2xl font-bold tracking-tight", tone, weight, truncate, className), children }));
3382
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("h2", __spreadProps(__spreadValues({ ref }, props), { className: textClass("text-2xl font-semibold tracking-tight", tone, weight, truncate, className), children }));
3345
3383
  });
3346
- var H3 = (0, import_react19.forwardRef)(function H32(_a, ref) {
3384
+ var H3 = (0, import_react20.forwardRef)(function H32(_a, ref) {
3347
3385
  var _b = _a, { children, tone = "default", weight, truncate, className } = _b, props = __objRest(_b, ["children", "tone", "weight", "truncate", "className"]);
3348
3386
  return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("h3", __spreadProps(__spreadValues({ ref }, props), { className: textClass("text-xl font-semibold", tone, weight, truncate, className), children }));
3349
3387
  });
3350
- var H4 = (0, import_react19.forwardRef)(function H42(_a, ref) {
3388
+ var H4 = (0, import_react20.forwardRef)(function H42(_a, ref) {
3351
3389
  var _b = _a, { children, tone = "default", weight, truncate, className } = _b, props = __objRest(_b, ["children", "tone", "weight", "truncate", "className"]);
3352
3390
  return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("h4", __spreadProps(__spreadValues({ ref }, props), { className: textClass("text-lg font-semibold", tone, weight, truncate, className), children }));
3353
3391
  });
3354
- var H5 = (0, import_react19.forwardRef)(function H52(_a, ref) {
3392
+ var H5 = (0, import_react20.forwardRef)(function H52(_a, ref) {
3355
3393
  var _b = _a, { children, tone = "default", weight, truncate, className } = _b, props = __objRest(_b, ["children", "tone", "weight", "truncate", "className"]);
3356
3394
  return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("h5", __spreadProps(__spreadValues({ ref }, props), { className: textClass("text-base font-semibold", tone, weight, truncate, className), children }));
3357
3395
  });
3358
- var P = (0, import_react19.forwardRef)(function P2(_a, ref) {
3396
+ var P = (0, import_react20.forwardRef)(function P2(_a, ref) {
3359
3397
  var _b = _a, { children, tone = "default", weight, truncate, className } = _b, props = __objRest(_b, ["children", "tone", "weight", "truncate", "className"]);
3360
3398
  return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", __spreadProps(__spreadValues({ ref }, props), { className: textClass("text-base leading-relaxed", tone, weight, truncate, className), children }));
3361
3399
  });
3362
- var Small = (0, import_react19.forwardRef)(function Small2(_a, ref) {
3400
+ var Small = (0, import_react20.forwardRef)(function Small2(_a, ref) {
3363
3401
  var _b = _a, { children, tone = "default", weight, truncate, className } = _b, props = __objRest(_b, ["children", "tone", "weight", "truncate", "className"]);
3364
3402
  return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", __spreadProps(__spreadValues({ ref }, props), { className: textClass("text-sm leading-relaxed", tone, weight, truncate, className), children }));
3365
3403
  });
3366
- var Caption = (0, import_react19.forwardRef)(function Caption2(_a, ref) {
3404
+ var Caption = (0, import_react20.forwardRef)(function Caption2(_a, ref) {
3367
3405
  var _b = _a, { children, tone = "muted", weight, truncate, className } = _b, props = __objRest(_b, ["children", "tone", "weight", "truncate", "className"]);
3368
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", __spreadProps(__spreadValues({ ref }, props), { className: textClass("text-[11px] font-medium uppercase tracking-wider", tone, weight, truncate, className), children }));
3406
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", __spreadProps(__spreadValues({ ref }, props), { className: textClass("text-xs font-medium", tone, weight, truncate, className), children }));
3369
3407
  });
3370
- var Overline = (0, import_react19.forwardRef)(function Overline2(_a, ref) {
3408
+ var Overline = (0, import_react20.forwardRef)(function Overline2(_a, ref) {
3371
3409
  var _b = _a, { children, tone = "muted", weight, truncate, className } = _b, props = __objRest(_b, ["children", "tone", "weight", "truncate", "className"]);
3372
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", __spreadProps(__spreadValues({ ref }, props), { className: textClass("text-[10px] font-bold uppercase tracking-[0.15em]", tone, weight, truncate, className), children }));
3410
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", __spreadProps(__spreadValues({ ref }, props), { className: textClass("text-[length:var(--ph-type-overline)] font-semibold uppercase tracking-[0.08em]", tone, weight, truncate, className), children }));
3373
3411
  });
3374
- var Lead = (0, import_react19.forwardRef)(function Lead2(_a, ref) {
3412
+ var Lead = (0, import_react20.forwardRef)(function Lead2(_a, ref) {
3375
3413
  var _b = _a, { children, tone = "subtle", weight, truncate, className } = _b, props = __objRest(_b, ["children", "tone", "weight", "truncate", "className"]);
3376
3414
  return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", __spreadProps(__spreadValues({ ref }, props), { className: textClass("ph-lead", tone, weight, truncate, className), children }));
3377
3415
  });
3378
- var Mono = (0, import_react19.forwardRef)(function Mono2(_a, ref) {
3416
+ var Mono = (0, import_react20.forwardRef)(function Mono2(_a, ref) {
3379
3417
  var _b = _a, { children, tone = "default", weight, truncate, className } = _b, props = __objRest(_b, ["children", "tone", "weight", "truncate", "className"]);
3380
3418
  return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("code", __spreadProps(__spreadValues({ ref }, props), { className: textClass("text-sm font-mono leading-relaxed", tone, weight, truncate, className), children }));
3381
3419
  });
3382
- var Label = (0, import_react19.forwardRef)(function Label2(_a, ref) {
3420
+ var Label = (0, import_react20.forwardRef)(function Label2(_a, ref) {
3383
3421
  var _b = _a, { children, tone = "default", weight, truncate, className } = _b, props = __objRest(_b, ["children", "tone", "weight", "truncate", "className"]);
3384
3422
  return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("label", __spreadProps(__spreadValues({ ref }, props), { className: textClass("text-sm font-medium", tone, weight, truncate, className), children }));
3385
3423
  });
3386
3424
 
3387
3425
  // src/components/ui/Avatar.tsx
3426
+ var import_react21 = require("react");
3388
3427
  var import_jsx_runtime31 = require("react/jsx-runtime");
3389
3428
  var sizeMap4 = {
3390
3429
  xs: "h-8 w-8 text-[10px]",
@@ -3404,7 +3443,7 @@ function Avatar(_a) {
3404
3443
  label,
3405
3444
  icon,
3406
3445
  size = "md",
3407
- color = "bg-ph-brand text-white",
3446
+ color = "bg-ph-brand text-[var(--ph-on-accent)]",
3408
3447
  status,
3409
3448
  badge,
3410
3449
  className
@@ -3422,7 +3461,7 @@ function Avatar(_a) {
3422
3461
  "div",
3423
3462
  {
3424
3463
  className: cn(
3425
- "flex items-center justify-center rounded-full border border-ph-border font-bold shadow-ph",
3464
+ "ph-avatar flex items-center justify-center rounded-full border border-ph-border font-bold",
3426
3465
  sizeMap4[size],
3427
3466
  color
3428
3467
  ),
@@ -3440,12 +3479,12 @@ function Avatar(_a) {
3440
3479
  )
3441
3480
  }
3442
3481
  ),
3443
- badge && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "absolute -bottom-1 -right-1 flex min-w-[22px] items-center justify-center rounded-full bg-ph-brand px-1.5 py-px text-[10px] font-bold text-white", children: badge })
3482
+ badge && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "absolute -bottom-1 -right-1 flex min-w-[22px] items-center justify-center rounded-full bg-ph-brand px-1.5 py-px text-[10px] font-bold text-[var(--ph-on-accent)]", children: badge })
3444
3483
  ] }));
3445
3484
  }
3446
3485
  function AvatarGroup(_a) {
3447
3486
  var _b = _a, { children, max, className } = _b, props = __objRest(_b, ["children", "max", "className"]);
3448
- const items = Array.isArray(children) ? children : [children];
3487
+ const items = import_react21.Children.toArray(children);
3449
3488
  const visible = max ? items.slice(0, max) : items;
3450
3489
  const remaining = max ? items.length - max : 0;
3451
3490
  return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", __spreadProps(__spreadValues({ className: cn("-space-x-3 flex rtl:space-x-reverse", className) }, props), { children: [
@@ -3462,7 +3501,7 @@ function AvatarGroup(_a) {
3462
3501
  }
3463
3502
 
3464
3503
  // src/components/ui/Progress.tsx
3465
- var import_react20 = require("react");
3504
+ var import_react22 = require("react");
3466
3505
  var import_jsx_runtime32 = require("react/jsx-runtime");
3467
3506
  var sizeMap5 = {
3468
3507
  sm: "h-1",
@@ -3491,7 +3530,7 @@ function Progress(_a) {
3491
3530
  "aria-label",
3492
3531
  "aria-labelledby"
3493
3532
  ]);
3494
- const labelId = (0, import_react20.useId)();
3533
+ const labelId = (0, import_react22.useId)();
3495
3534
  const safeMax = Number.isFinite(max) && max > 0 ? max : 100;
3496
3535
  const safeValue = Number.isFinite(value) ? Math.min(safeMax, Math.max(0, value)) : 0;
3497
3536
  const percentage = safeValue / safeMax * 100;
@@ -3520,9 +3559,9 @@ function Progress(_a) {
3520
3559
  }
3521
3560
 
3522
3561
  // src/components/ui/Link.tsx
3523
- var import_react21 = require("react");
3562
+ var import_react23 = require("react");
3524
3563
  var import_jsx_runtime33 = require("react/jsx-runtime");
3525
- var Link = (0, import_react21.forwardRef)(function Link2(_a, ref) {
3564
+ var Link = (0, import_react23.forwardRef)(function Link2(_a, ref) {
3526
3565
  var _b = _a, {
3527
3566
  className,
3528
3567
  disabled = false,
@@ -3602,9 +3641,9 @@ function Dot(_a) {
3602
3641
  Dot.displayName = "Dot";
3603
3642
 
3604
3643
  // src/components/ui/Chip.tsx
3605
- var import_react22 = require("react");
3644
+ var import_react24 = require("react");
3606
3645
  var import_jsx_runtime36 = require("react/jsx-runtime");
3607
- var Chip = (0, import_react22.forwardRef)(function Chip2(_a, ref) {
3646
+ var Chip = (0, import_react24.forwardRef)(function Chip2(_a, ref) {
3608
3647
  var _b = _a, {
3609
3648
  selected = false,
3610
3649
  onRemove,