@ciridae/ui 1.0.3 → 1.0.5

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 (124) hide show
  1. package/dist/chat/conversation-source.d.ts +15 -1
  2. package/dist/chat/describe-tool-call.d.ts +3 -3
  3. package/dist/chat/describe-tool-call.js +3 -3
  4. package/dist/chat/message-text.js +2 -2
  5. package/dist/ciridae.css +16 -4
  6. package/dist/components/activity-feed.d.ts +1 -0
  7. package/dist/components/activity-feed.js +1 -0
  8. package/dist/components/app-frame.d.ts +13 -1
  9. package/dist/components/app-frame.js +45 -3
  10. package/dist/components/app-navigation.d.ts +28 -1
  11. package/dist/components/app-navigation.js +110 -14
  12. package/dist/components/badge.d.ts +29 -4
  13. package/dist/components/badge.js +134 -15
  14. package/dist/components/bulk-action-bar.js +3 -3
  15. package/dist/components/button.d.ts +10 -3
  16. package/dist/components/button.js +77 -44
  17. package/dist/components/calendar.js +44 -17
  18. package/dist/components/centered-page.js +2 -2
  19. package/dist/components/chart.d.ts +1 -1
  20. package/dist/components/chart.js +16 -11
  21. package/dist/components/chat-client-source.js +47 -6
  22. package/dist/components/chat-sheet-controller.d.ts +1 -0
  23. package/dist/components/chat-sheet-controller.js +1 -0
  24. package/dist/components/chat-sheet.d.ts +10 -2
  25. package/dist/components/chat-sheet.js +74 -37
  26. package/dist/components/chat.d.ts +90 -14
  27. package/dist/components/chat.js +401 -101
  28. package/dist/components/checkbox-item.d.ts +5 -2
  29. package/dist/components/checkbox-item.js +9 -5
  30. package/dist/components/chip.d.ts +5 -0
  31. package/dist/components/chip.js +27 -1
  32. package/dist/components/column-settings.js +1 -1
  33. package/dist/components/command-menu.d.ts +5 -1
  34. package/dist/components/command-menu.js +98 -32
  35. package/dist/components/command-palette.d.ts +6 -2
  36. package/dist/components/command-palette.js +20 -10
  37. package/dist/components/data-display.d.ts +35 -4
  38. package/dist/components/data-display.js +138 -19
  39. package/dist/components/data-grid.d.ts +14 -2
  40. package/dist/components/data-grid.js +61 -26
  41. package/dist/components/date-range-picker.js +9 -20
  42. package/dist/components/drawer.d.ts +5 -0
  43. package/dist/components/drawer.js +91 -54
  44. package/dist/components/editable-field.d.ts +17 -3
  45. package/dist/components/editable-field.js +57 -27
  46. package/dist/components/email-input.js +6 -5
  47. package/dist/components/environment-frame.d.ts +1 -1
  48. package/dist/components/environment-frame.js +37 -6
  49. package/dist/components/filter-bar.js +39 -28
  50. package/dist/components/form-controls.d.ts +9 -0
  51. package/dist/components/form-controls.js +46 -22
  52. package/dist/components/form-layout.d.ts +7 -3
  53. package/dist/components/form-layout.js +68 -23
  54. package/dist/components/glass-menu.d.ts +3 -0
  55. package/dist/components/glass-menu.js +63 -0
  56. package/dist/components/gradient-edge.d.ts +9 -0
  57. package/dist/components/gradient-edge.js +31 -0
  58. package/dist/components/input.d.ts +4 -2
  59. package/dist/components/input.js +26 -15
  60. package/dist/components/keycap.d.ts +9 -5
  61. package/dist/components/keycap.js +57 -19
  62. package/dist/components/lightbox.js +2 -1
  63. package/dist/components/locale.d.ts +10 -0
  64. package/dist/components/locale.js +18 -2
  65. package/dist/components/log-entry.d.ts +40 -0
  66. package/dist/components/log-entry.js +146 -0
  67. package/dist/components/mention-input.js +4 -3
  68. package/dist/components/menu.d.ts +6 -2
  69. package/dist/components/menu.js +34 -37
  70. package/dist/components/meter.d.ts +9 -1
  71. package/dist/components/meter.js +64 -6
  72. package/dist/components/navigation.d.ts +21 -4
  73. package/dist/components/navigation.js +84 -19
  74. package/dist/components/notification-tray.js +5 -4
  75. package/dist/components/overlays.d.ts +3 -1
  76. package/dist/components/overlays.js +69 -40
  77. package/dist/components/page-frame.js +1 -1
  78. package/dist/components/panel.d.ts +1 -1
  79. package/dist/components/panel.js +18 -12
  80. package/dist/components/radio-card.js +10 -9
  81. package/dist/components/record.d.ts +25 -1
  82. package/dist/components/record.js +147 -18
  83. package/dist/components/segmented-bar.d.ts +3 -1
  84. package/dist/components/segmented-bar.js +16 -6
  85. package/dist/components/select.d.ts +5 -2
  86. package/dist/components/select.js +103 -127
  87. package/dist/components/shell-skeleton.js +1 -1
  88. package/dist/components/shell.d.ts +2 -2
  89. package/dist/components/shell.js +43 -45
  90. package/dist/components/sidebar.d.ts +7 -2
  91. package/dist/components/sidebar.js +55 -27
  92. package/dist/components/single-line-text.d.ts +2 -0
  93. package/dist/components/single-line-text.js +16 -0
  94. package/dist/components/site-banner.d.ts +5 -2
  95. package/dist/components/site-banner.js +17 -6
  96. package/dist/components/skeleton.d.ts +7 -6
  97. package/dist/components/skeleton.js +28 -16
  98. package/dist/components/skeletons.d.ts +12 -0
  99. package/dist/components/skeletons.js +71 -8
  100. package/dist/components/stages.d.ts +78 -6
  101. package/dist/components/stages.js +512 -156
  102. package/dist/components/stat-card.d.ts +10 -2
  103. package/dist/components/stat-card.js +92 -37
  104. package/dist/components/status-banner.js +1 -1
  105. package/dist/components/tabs.js +26 -13
  106. package/dist/components/theme-toggle.d.ts +4 -0
  107. package/dist/components/theme-toggle.js +67 -0
  108. package/dist/components/toast.d.ts +9 -2
  109. package/dist/components/toast.js +78 -29
  110. package/dist/preset.js +291 -33
  111. package/dist/styled-system/styles.css +3107 -1039
  112. package/dist/styled-system/tokens/index.mjs +602 -22
  113. package/dist/styled-system/tokens/tokens.d.ts +11 -11
  114. package/dist/styled-system/types/prop-type.d.ts +2 -2
  115. package/dist/styles.css +16 -4
  116. package/dist/theme/color.d.ts +3 -0
  117. package/dist/theme/color.js +5 -0
  118. package/dist/theme/derive.d.ts +9 -2
  119. package/dist/theme/derive.js +72 -12
  120. package/dist/theme/palettes.d.ts +49 -6
  121. package/dist/theme/palettes.js +84 -15
  122. package/dist/theme/tokens.d.ts +3 -3
  123. package/dist/theme/tokens.js +108 -32
  124. package/package.json +9 -1
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable */
2
2
  export type Token = `aspectRatios.${AspectRatioToken}` | `borders.${BorderToken}` | `easings.${EasingToken}` | `shadows.${ShadowToken}` | `colors.${ColorToken}` | `blurs.${BlurToken}` | `animations.${AnimationToken}` | `spacing.${SpacingToken}` | `sizes.${SizeToken}` | `opacity.${OpacityToken}` | `fontWeights.${FontWeightToken}` | `letterSpacings.${LetterSpacingToken}` | `fonts.${FontToken}` | `lineHeights.${LineHeightToken}` | `fontSizes.${FontSizeToken}` | `durations.${DurationToken}` | `zIndex.${ZIndexToken}` | `radii.${RadiusToken}` | `breakpoints.${BreakpointToken}` | `gradients.${GradientToken}`
3
3
 
4
- export type ColorPalette = "current" | "black" | "white" | "transparent" | "rose" | "pink" | "fuchsia" | "purple" | "violet" | "indigo" | "blue" | "sky" | "cyan" | "teal" | "emerald" | "green" | "lime" | "yellow" | "amber" | "orange" | "red" | "neutral" | "stone" | "zinc" | "gray" | "slate" | "bg.canvas" | "bg.panel" | "bg.card" | "bg.avatar" | "bg.backdrop" | "bg.infoSubtle" | "bg.successSubtle" | "bg.warningSubtle" | "bg.errorSubtle" | "fg.archived" | "border.subtle" | "border.focus" | "fg.primary" | "fg.muted" | "fg.secondary" | "fg.subtle" | "border.control" | "bg.field" | "bg.fieldDisabled" | "border.mark" | "border.error" | "bg.rowHover" | "bg.selected" | "bg.selectedHover" | "border.selected" | "bg.track" | "bg.knob" | "border.panel" | "border.card" | "border.glass" | "border.toolbar" | "border.hairline" | "bg.surface" | "bg.control" | "bg.pill" | "bg.glass" | "bg.glassHover" | "bg.raised" | "bg.raisedHover" | "bg.check" | "bg.hover" | "bg.fill" | "bg.primary" | "bg.primaryHover" | "bg.tinted" | "bg.danger" | "accent.brand" | "accent.green" | "accent.red" | "accent.yellow" | "accent.blue" | "accent.bronze" | "border.bronze" | "fg.onAccent"
4
+ export type ColorPalette = "current" | "black" | "white" | "transparent" | "rose" | "pink" | "fuchsia" | "purple" | "violet" | "indigo" | "blue" | "sky" | "cyan" | "teal" | "emerald" | "green" | "lime" | "yellow" | "amber" | "orange" | "red" | "neutral" | "stone" | "zinc" | "gray" | "slate" | "bg.canvas" | "bg.panel" | "bg.card" | "bg.avatar" | "bg.backdrop" | "bg.popover" | "bg.modalShell" | "bg.modalSheet" | "bg.drawerShell" | "bg.drawerSheet" | "bg.infoSubtle" | "bg.successSubtle" | "bg.warningSubtle" | "bg.errorSubtle" | "fg.archived" | "border.subtle" | "border.focus" | "fg.primary" | "fg.muted" | "fg.secondary" | "fg.subtle" | "fg.quietGlyph" | "fg.label" | "border.control" | "border.canvas" | "border.divider" | "border.menuHover" | "bg.field" | "bg.formField" | "bg.openTrigger" | "bg.fieldDisabled" | "border.mark" | "border.error" | "bg.rowHover" | "bg.selected" | "bg.selectedHover" | "border.selected" | "bg.track" | "bg.knob" | "border.panel" | "border.card" | "border.glass" | "border.hairline" | "bg.surface" | "bg.control" | "bg.pill" | "bg.glass" | "bg.glassHover" | "bg.raised" | "bg.raisedHover" | "bg.check" | "bg.hover" | "bg.controlHover" | "bg.pressed" | "bg.fill" | "bg.primary" | "bg.primaryHover" | "bg.tinted" | "bg.danger" | "bg.warningTint" | "bg.successTint" | "bg.errorTint" | "accent.brand" | "accent.green" | "accent.greenDark" | "accent.red" | "accent.redDark" | "accent.yellow" | "accent.yellowIcon" | "accent.blue" | "accent.bronze" | "border.bronze" | "chart.bar" | "chart.trend" | "chart.category1" | "chart.category2" | "chart.category3" | "chart.category4" | "chart.barTrack" | "chart.progressTrack" | "chart.atRiskTrack" | "chart.neutral" | "chart.notStarted" | "fg.onAccent"
5
5
 
6
6
  export type AspectRatioToken = "square" | "landscape" | "portrait" | "wide" | "ultrawide" | "golden"
7
7
 
@@ -9,39 +9,39 @@ export type BorderToken = "none"
9
9
 
10
10
  export type EasingToken = "default" | "linear" | "in" | "out" | "in-out"
11
11
 
12
- export type ShadowToken = "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "inset-2xs" | "inset-xs" | "inset-sm" | "indicator.live" | "search" | "inset" | "card" | "focus" | "panel" | "glow" | "badge" | "toast" | "control.raised" | "control.raisedHover" | "control.pressed"
12
+ export type ShadowToken = "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "inset-2xs" | "inset-xs" | "inset-sm" | "indicator.live" | "search" | "inset" | "card" | "soft" | "drawerShell" | "focus" | "panel" | "glow" | "badge" | "toast" | "control.raised" | "control.raisedHover" | "control.pressed"
13
13
 
14
- export type ColorToken = "current" | "black" | "white" | "transparent" | "rose.50" | "rose.100" | "rose.200" | "rose.300" | "rose.400" | "rose.500" | "rose.600" | "rose.700" | "rose.800" | "rose.900" | "rose.950" | "pink.50" | "pink.100" | "pink.200" | "pink.300" | "pink.400" | "pink.500" | "pink.600" | "pink.700" | "pink.800" | "pink.900" | "pink.950" | "fuchsia.50" | "fuchsia.100" | "fuchsia.200" | "fuchsia.300" | "fuchsia.400" | "fuchsia.500" | "fuchsia.600" | "fuchsia.700" | "fuchsia.800" | "fuchsia.900" | "fuchsia.950" | "purple.50" | "purple.100" | "purple.200" | "purple.300" | "purple.400" | "purple.500" | "purple.600" | "purple.700" | "purple.800" | "purple.900" | "purple.950" | "violet.50" | "violet.100" | "violet.200" | "violet.300" | "violet.400" | "violet.500" | "violet.600" | "violet.700" | "violet.800" | "violet.900" | "violet.950" | "indigo.50" | "indigo.100" | "indigo.200" | "indigo.300" | "indigo.400" | "indigo.500" | "indigo.600" | "indigo.700" | "indigo.800" | "indigo.900" | "indigo.950" | "blue.50" | "blue.100" | "blue.200" | "blue.300" | "blue.400" | "blue.500" | "blue.600" | "blue.700" | "blue.800" | "blue.900" | "blue.950" | "sky.50" | "sky.100" | "sky.200" | "sky.300" | "sky.400" | "sky.500" | "sky.600" | "sky.700" | "sky.800" | "sky.900" | "sky.950" | "cyan.50" | "cyan.100" | "cyan.200" | "cyan.300" | "cyan.400" | "cyan.500" | "cyan.600" | "cyan.700" | "cyan.800" | "cyan.900" | "cyan.950" | "teal.50" | "teal.100" | "teal.200" | "teal.300" | "teal.400" | "teal.500" | "teal.600" | "teal.700" | "teal.800" | "teal.900" | "teal.950" | "emerald.50" | "emerald.100" | "emerald.200" | "emerald.300" | "emerald.400" | "emerald.500" | "emerald.600" | "emerald.700" | "emerald.800" | "emerald.900" | "emerald.950" | "green.50" | "green.100" | "green.200" | "green.300" | "green.400" | "green.500" | "green.600" | "green.700" | "green.800" | "green.900" | "green.950" | "lime.50" | "lime.100" | "lime.200" | "lime.300" | "lime.400" | "lime.500" | "lime.600" | "lime.700" | "lime.800" | "lime.900" | "lime.950" | "yellow.50" | "yellow.100" | "yellow.200" | "yellow.300" | "yellow.400" | "yellow.500" | "yellow.600" | "yellow.700" | "yellow.800" | "yellow.900" | "yellow.950" | "amber.50" | "amber.100" | "amber.200" | "amber.300" | "amber.400" | "amber.500" | "amber.600" | "amber.700" | "amber.800" | "amber.900" | "amber.950" | "orange.50" | "orange.100" | "orange.200" | "orange.300" | "orange.400" | "orange.500" | "orange.600" | "orange.700" | "orange.800" | "orange.900" | "orange.950" | "red.50" | "red.100" | "red.200" | "red.300" | "red.400" | "red.500" | "red.600" | "red.700" | "red.800" | "red.900" | "red.950" | "neutral.50" | "neutral.100" | "neutral.200" | "neutral.300" | "neutral.400" | "neutral.500" | "neutral.600" | "neutral.700" | "neutral.800" | "neutral.900" | "neutral.950" | "stone.50" | "stone.100" | "stone.200" | "stone.300" | "stone.400" | "stone.500" | "stone.600" | "stone.700" | "stone.800" | "stone.900" | "stone.950" | "zinc.50" | "zinc.100" | "zinc.200" | "zinc.300" | "zinc.400" | "zinc.500" | "zinc.600" | "zinc.700" | "zinc.800" | "zinc.900" | "zinc.950" | "gray.50" | "gray.100" | "gray.200" | "gray.300" | "gray.400" | "gray.500" | "gray.600" | "gray.700" | "gray.800" | "gray.900" | "gray.950" | "slate.50" | "slate.100" | "slate.200" | "slate.300" | "slate.400" | "slate.500" | "slate.600" | "slate.700" | "slate.800" | "slate.900" | "slate.950" | "bg.canvas" | "bg.panel" | "bg.card" | "bg.avatar" | "bg.backdrop" | "bg.infoSubtle" | "bg.successSubtle" | "bg.warningSubtle" | "bg.errorSubtle" | "fg.archived" | "border.subtle" | "border.focus" | "fg.primary" | "fg.muted" | "fg.secondary" | "fg.subtle" | "border.control" | "bg.field" | "bg.fieldDisabled" | "border.mark" | "border.error" | "bg.rowHover" | "bg.selected" | "bg.selectedHover" | "border.selected" | "bg.track" | "bg.knob" | "border.panel" | "border.card" | "border.glass" | "border.toolbar" | "border.hairline" | "bg.surface" | "bg.control" | "bg.pill" | "bg.glass" | "bg.glassHover" | "bg.raised" | "bg.raisedHover" | "bg.check" | "bg.hover" | "bg.fill" | "bg.primary" | "bg.primaryHover" | "bg.tinted" | "bg.danger" | "accent.brand" | "accent.green" | "accent.red" | "accent.yellow" | "accent.blue" | "accent.bronze" | "border.bronze" | "fg.onAccent" | "colorPalette" | "colorPalette.50" | "colorPalette.100" | "colorPalette.200" | "colorPalette.300" | "colorPalette.400" | "colorPalette.500" | "colorPalette.600" | "colorPalette.700" | "colorPalette.800" | "colorPalette.900" | "colorPalette.950"
14
+ export type ColorToken = "current" | "black" | "white" | "transparent" | "rose.50" | "rose.100" | "rose.200" | "rose.300" | "rose.400" | "rose.500" | "rose.600" | "rose.700" | "rose.800" | "rose.900" | "rose.950" | "pink.50" | "pink.100" | "pink.200" | "pink.300" | "pink.400" | "pink.500" | "pink.600" | "pink.700" | "pink.800" | "pink.900" | "pink.950" | "fuchsia.50" | "fuchsia.100" | "fuchsia.200" | "fuchsia.300" | "fuchsia.400" | "fuchsia.500" | "fuchsia.600" | "fuchsia.700" | "fuchsia.800" | "fuchsia.900" | "fuchsia.950" | "purple.50" | "purple.100" | "purple.200" | "purple.300" | "purple.400" | "purple.500" | "purple.600" | "purple.700" | "purple.800" | "purple.900" | "purple.950" | "violet.50" | "violet.100" | "violet.200" | "violet.300" | "violet.400" | "violet.500" | "violet.600" | "violet.700" | "violet.800" | "violet.900" | "violet.950" | "indigo.50" | "indigo.100" | "indigo.200" | "indigo.300" | "indigo.400" | "indigo.500" | "indigo.600" | "indigo.700" | "indigo.800" | "indigo.900" | "indigo.950" | "blue.50" | "blue.100" | "blue.200" | "blue.300" | "blue.400" | "blue.500" | "blue.600" | "blue.700" | "blue.800" | "blue.900" | "blue.950" | "sky.50" | "sky.100" | "sky.200" | "sky.300" | "sky.400" | "sky.500" | "sky.600" | "sky.700" | "sky.800" | "sky.900" | "sky.950" | "cyan.50" | "cyan.100" | "cyan.200" | "cyan.300" | "cyan.400" | "cyan.500" | "cyan.600" | "cyan.700" | "cyan.800" | "cyan.900" | "cyan.950" | "teal.50" | "teal.100" | "teal.200" | "teal.300" | "teal.400" | "teal.500" | "teal.600" | "teal.700" | "teal.800" | "teal.900" | "teal.950" | "emerald.50" | "emerald.100" | "emerald.200" | "emerald.300" | "emerald.400" | "emerald.500" | "emerald.600" | "emerald.700" | "emerald.800" | "emerald.900" | "emerald.950" | "green.50" | "green.100" | "green.200" | "green.300" | "green.400" | "green.500" | "green.600" | "green.700" | "green.800" | "green.900" | "green.950" | "lime.50" | "lime.100" | "lime.200" | "lime.300" | "lime.400" | "lime.500" | "lime.600" | "lime.700" | "lime.800" | "lime.900" | "lime.950" | "yellow.50" | "yellow.100" | "yellow.200" | "yellow.300" | "yellow.400" | "yellow.500" | "yellow.600" | "yellow.700" | "yellow.800" | "yellow.900" | "yellow.950" | "amber.50" | "amber.100" | "amber.200" | "amber.300" | "amber.400" | "amber.500" | "amber.600" | "amber.700" | "amber.800" | "amber.900" | "amber.950" | "orange.50" | "orange.100" | "orange.200" | "orange.300" | "orange.400" | "orange.500" | "orange.600" | "orange.700" | "orange.800" | "orange.900" | "orange.950" | "red.50" | "red.100" | "red.200" | "red.300" | "red.400" | "red.500" | "red.600" | "red.700" | "red.800" | "red.900" | "red.950" | "neutral.50" | "neutral.100" | "neutral.200" | "neutral.300" | "neutral.400" | "neutral.500" | "neutral.600" | "neutral.700" | "neutral.800" | "neutral.900" | "neutral.950" | "stone.50" | "stone.100" | "stone.200" | "stone.300" | "stone.400" | "stone.500" | "stone.600" | "stone.700" | "stone.800" | "stone.900" | "stone.950" | "zinc.50" | "zinc.100" | "zinc.200" | "zinc.300" | "zinc.400" | "zinc.500" | "zinc.600" | "zinc.700" | "zinc.800" | "zinc.900" | "zinc.950" | "gray.50" | "gray.100" | "gray.200" | "gray.300" | "gray.400" | "gray.500" | "gray.600" | "gray.700" | "gray.800" | "gray.900" | "gray.950" | "slate.50" | "slate.100" | "slate.200" | "slate.300" | "slate.400" | "slate.500" | "slate.600" | "slate.700" | "slate.800" | "slate.900" | "slate.950" | "bg.canvas" | "bg.panel" | "bg.card" | "bg.avatar" | "bg.backdrop" | "bg.popover" | "bg.modalShell" | "bg.modalSheet" | "bg.drawerShell" | "bg.drawerSheet" | "bg.infoSubtle" | "bg.successSubtle" | "bg.warningSubtle" | "bg.errorSubtle" | "fg.archived" | "border.subtle" | "border.focus" | "fg.primary" | "fg.muted" | "fg.secondary" | "fg.subtle" | "fg.quietGlyph" | "fg.label" | "border.control" | "border.canvas" | "border.divider" | "border.menuHover" | "bg.field" | "bg.formField" | "bg.openTrigger" | "bg.fieldDisabled" | "border.mark" | "border.error" | "bg.rowHover" | "bg.selected" | "bg.selectedHover" | "border.selected" | "bg.track" | "bg.knob" | "border.panel" | "border.card" | "border.glass" | "border.hairline" | "bg.surface" | "bg.control" | "bg.pill" | "bg.glass" | "bg.glassHover" | "bg.raised" | "bg.raisedHover" | "bg.check" | "bg.hover" | "bg.controlHover" | "bg.pressed" | "bg.fill" | "bg.primary" | "bg.primaryHover" | "bg.tinted" | "bg.danger" | "bg.warningTint" | "bg.successTint" | "bg.errorTint" | "accent.brand" | "accent.green" | "accent.greenDark" | "accent.red" | "accent.redDark" | "accent.yellow" | "accent.yellowIcon" | "accent.blue" | "accent.bronze" | "border.bronze" | "chart.bar" | "chart.trend" | "chart.category1" | "chart.category2" | "chart.category3" | "chart.category4" | "chart.barTrack" | "chart.progressTrack" | "chart.atRiskTrack" | "chart.neutral" | "chart.notStarted" | "fg.onAccent" | "colorPalette" | "colorPalette.50" | "colorPalette.100" | "colorPalette.200" | "colorPalette.300" | "colorPalette.400" | "colorPalette.500" | "colorPalette.600" | "colorPalette.700" | "colorPalette.800" | "colorPalette.900" | "colorPalette.950"
15
15
 
16
- export type BlurToken = "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl"
16
+ export type BlurToken = "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "popover" | "modalShell" | "modalSheet" | "drawerShell"
17
17
 
18
18
  export type AnimationToken = "spin" | "ping" | "pulse" | "bounce"
19
19
 
20
- export type SpacingToken = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "5.5" | "none" | "control.trackInset" | "focus.ringWidth" | "focus.ringOffset" | "focus.ringReach" | "control.iconGap" | "control.block" | "control.inline" | "control.compactBlock" | "control.compactInline" | "control.largeInline" | "control.iconInline" | "search.inline" | "field.block" | "layout.tightGap" | "sidebar.groupGap" | "sidebar.inline" | "sidebar.block" | "control.tabInline" | "layout.controlGap" | "layout.contentGap" | "layout.clusterGap" | "layout.pageGap" | "layout.projectListOffset" | "layout.sectionGap" | "log.columnGap" | "log.detailIndent" | "log.detailIndentCompact" | "log.rowBlock" | "menu.inset" | "menu.itemInline" | "sidebar.markGap" | "panel.hairline" | "panel.compact" | "panel.default" | "panel.comfortable" | "panel.roomy" | "panel.sidebarBlock" | "page.inline" | "shell.leading" | "table.cell" | "table.rowBlock" | "table.compactRowBlock" | "-1" | "-2" | "-3" | "-4" | "-5" | "-6" | "-7" | "-8" | "-9" | "-10" | "-11" | "-12" | "-14" | "-16" | "-20" | "-24" | "-28" | "-32" | "-36" | "-40" | "-44" | "-48" | "-52" | "-56" | "-60" | "-64" | "-72" | "-80" | "-96" | "-0.5" | "-1.5" | "-2.5" | "-3.5" | "-4.5" | "-5.5" | "-none" | "-control.trackInset" | "-focus.ringWidth" | "-focus.ringOffset" | "-focus.ringReach" | "-control.iconGap" | "-control.block" | "-control.inline" | "-control.compactBlock" | "-control.compactInline" | "-control.largeInline" | "-control.iconInline" | "-search.inline" | "-field.block" | "-layout.tightGap" | "-sidebar.groupGap" | "-sidebar.inline" | "-sidebar.block" | "-control.tabInline" | "-layout.controlGap" | "-layout.contentGap" | "-layout.clusterGap" | "-layout.pageGap" | "-layout.projectListOffset" | "-layout.sectionGap" | "-log.columnGap" | "-log.detailIndent" | "-log.detailIndentCompact" | "-log.rowBlock" | "-menu.inset" | "-menu.itemInline" | "-sidebar.markGap" | "-panel.hairline" | "-panel.compact" | "-panel.default" | "-panel.comfortable" | "-panel.roomy" | "-panel.sidebarBlock" | "-page.inline" | "-shell.leading" | "-table.cell" | "-table.rowBlock" | "-table.compactRowBlock"
20
+ export type SpacingToken = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "5.5" | "none" | "control.trackInset" | "focus.ringWidth" | "focus.ringOffset" | "focus.ringReach" | "control.iconGap" | "control.block" | "control.inline" | "control.compactBlock" | "control.compactInline" | "control.largeInline" | "control.iconInline" | "control.launcherInlineEnd" | "search.inline" | "field.block" | "layout.tightGap" | "sidebar.groupGap" | "sidebar.footerGap" | "sidebar.inline" | "sidebar.block" | "control.tabInline" | "layout.controlGap" | "layout.contentGap" | "layout.clusterGap" | "layout.pageGap" | "layout.projectListOffset" | "layout.sectionGap" | "layout.centeredCardGap" | "log.columnGap" | "log.detailIndent" | "log.detailIndentCompact" | "log.rowBlock" | "log.entryBlock" | "log.entryInline" | "log.entryCompactBlock" | "log.entryPanelBlock" | "log.entryPanelInline" | "menu.inset" | "menu.itemInline" | "sidebar.markGap" | "panel.hairline" | "panel.compact" | "panel.default" | "panel.comfortable" | "panel.roomy" | "panel.card" | "tile.block" | "tile.inline" | "skeleton.tileGap" | "emptyState.pageBlock" | "emptyState.compactBlock" | "stage.connectorGap" | "list.numberGap" | "meter.rowGap" | "panel.sidebarBlock" | "page.inline" | "shell.leading" | "table.cell" | "table.rowBlock" | "table.compactRowBlock" | "-1" | "-2" | "-3" | "-4" | "-5" | "-6" | "-7" | "-8" | "-9" | "-10" | "-11" | "-12" | "-14" | "-16" | "-20" | "-24" | "-28" | "-32" | "-36" | "-40" | "-44" | "-48" | "-52" | "-56" | "-60" | "-64" | "-72" | "-80" | "-96" | "-0.5" | "-1.5" | "-2.5" | "-3.5" | "-4.5" | "-5.5" | "-none" | "-control.trackInset" | "-focus.ringWidth" | "-focus.ringOffset" | "-focus.ringReach" | "-control.iconGap" | "-control.block" | "-control.inline" | "-control.compactBlock" | "-control.compactInline" | "-control.largeInline" | "-control.iconInline" | "-control.launcherInlineEnd" | "-search.inline" | "-field.block" | "-layout.tightGap" | "-sidebar.groupGap" | "-sidebar.footerGap" | "-sidebar.inline" | "-sidebar.block" | "-control.tabInline" | "-layout.controlGap" | "-layout.contentGap" | "-layout.clusterGap" | "-layout.pageGap" | "-layout.projectListOffset" | "-layout.sectionGap" | "-layout.centeredCardGap" | "-log.columnGap" | "-log.detailIndent" | "-log.detailIndentCompact" | "-log.rowBlock" | "-log.entryBlock" | "-log.entryInline" | "-log.entryCompactBlock" | "-log.entryPanelBlock" | "-log.entryPanelInline" | "-menu.inset" | "-menu.itemInline" | "-sidebar.markGap" | "-panel.hairline" | "-panel.compact" | "-panel.default" | "-panel.comfortable" | "-panel.roomy" | "-panel.card" | "-tile.block" | "-tile.inline" | "-skeleton.tileGap" | "-emptyState.pageBlock" | "-emptyState.compactBlock" | "-stage.connectorGap" | "-list.numberGap" | "-meter.rowGap" | "-panel.sidebarBlock" | "-page.inline" | "-shell.leading" | "-table.cell" | "-table.rowBlock" | "-table.compactRowBlock"
21
21
 
22
- export type SizeToken = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "5.5" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "prose" | "full" | "min" | "max" | "fit" | "border.hairline" | "indicator.dot" | "indicator.live" | "indicator.badge" | "indicator.count" | "log.caretColumn" | "log.minimum" | "log.rawMaximum" | "assistant.orb" | "widget.header" | "avatar.welcome" | "avatar.micro" | "avatar.small" | "avatar.menu" | "avatar.row" | "avatar.large" | "mark.inline" | "progress.track" | "progress.segment" | "indicator.swatch" | "menu.item" | "select.compactItem" | "code.maximum" | "brand.logo" | "indicator.radio" | "skeleton.line" | "skeleton.short" | "skeleton.medium" | "skeleton.long" | "chart.small" | "chart.medium" | "chart.large" | "control.mark" | "file.chipName" | "control.checkbox" | "control.radio" | "control.knob" | "control.toggleTrack" | "control.clear" | "control.chip" | "control.small" | "control.row" | "control.shortcut" | "control.compact" | "control.default" | "control.search" | "control.searchField" | "workspace.mark" | "workspace.avatar" | "control.field" | "sidebar.projectAction" | "toast.minimum" | "chat.footer" | "shell.header" | "shell.collapsed" | "table.scroll" | "field.textarea" | "chat.input" | "chat.inputMobile" | "chat.composerMinimum" | "overlay.menu" | "overlay.menuList" | "overlay.tray" | "overlay.trayList" | "overlay.tooltip" | "overlay.popoverNarrow" | "overlay.popover" | "overlay.popoverWide" | "search.dropdownPreview" | "emptyState.minimum" | "search.regularPreview" | "search.sidebarPreview" | "calendar.width" | "shell.sidebar" | "overlay.dialog" | "overlay.dialogWide" | "overlay.sheet" | "overlay.sheetNarrow" | "overlay.sheetDocked" | "toast.width" | "chat.thread" | "chat.composer" | "chat.bubble" | "chat.attachment" | "settings.column" | "card.centered" | "scroll.bar" | "card.centeredWide" | "card.centeredForm" | "steps.image" | "checklist.maximum" | "page.maximum" | "breakpoint-sm" | "breakpoint-md" | "breakpoint-lg" | "breakpoint-xl" | "breakpoint-2xl"
22
+ export type SizeToken = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "14" | "16" | "20" | "24" | "28" | "32" | "36" | "40" | "44" | "48" | "52" | "56" | "60" | "64" | "72" | "80" | "96" | "0.5" | "1.5" | "2.5" | "3.5" | "4.5" | "5.5" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "prose" | "full" | "min" | "max" | "fit" | "border.hairline" | "indicator.dot" | "indicator.live" | "indicator.badge" | "indicator.count" | "log.caretColumn" | "log.minimum" | "log.timeColumn" | "log.rawMaximum" | "assistant.orb" | "widget.header" | "avatar.welcome" | "avatar.micro" | "avatar.small" | "avatar.menu" | "avatar.agent" | "avatar.row" | "avatar.owner" | "avatar.large" | "mark.inline" | "progress.track" | "progress.segment" | "indicator.swatch" | "menu.item" | "select.compactItem" | "code.maximum" | "brand.logo" | "indicator.radio" | "skeleton.line" | "skeleton.bar" | "skeleton.badge" | "skeleton.caption" | "skeleton.short" | "skeleton.pill" | "skeleton.textLine" | "tile.minimum" | "skeleton.card" | "skeleton.cardBody" | "skeleton.medium" | "skeleton.long" | "chart.small" | "chart.medium" | "chart.large" | "control.mark" | "file.chipName" | "control.checkbox" | "control.radio" | "control.knob" | "control.toggleTrack" | "control.clear" | "control.chip" | "control.wordKeycap" | "control.send" | "control.small" | "control.restingTab" | "control.row" | "control.round" | "control.roundRail" | "control.roundSmall" | "control.sidebarSearch" | "list.number" | "tile.icon" | "partsRollup.height" | "sparkline.width" | "sparkline.height" | "sparkline.plotWidth" | "sparkline.plotHeight" | "control.shortcut" | "control.compact" | "control.default" | "control.search" | "control.searchField" | "workspace.mark" | "workspace.avatar" | "control.field" | "sidebar.projectAction" | "sidebar.railRule" | "sidebar.shortRow" | "toast.minimum" | "chat.footer" | "shell.header" | "shell.collapsed" | "table.scroll" | "table.headRow" | "field.textarea" | "field.inline" | "chat.input" | "chat.inputMobile" | "chat.composerMinimum" | "overlay.menu" | "overlay.menuList" | "overlay.helpMenu" | "overlay.tray" | "overlay.trayList" | "overlay.tooltip" | "overlay.popoverNarrow" | "overlay.popover" | "overlay.popoverWide" | "search.dropdownPreview" | "emptyState.minimum" | "search.regularPreview" | "search.sidebarPreview" | "shell.sidebar" | "overlay.dialog" | "overlay.palette" | "commandPalette.query" | "commandPalette.row" | "commandPalette.footer" | "overlay.dialogWide" | "overlay.sheet" | "overlay.sheetNarrow" | "overlay.sheetDocked" | "toast.width" | "toast.progressWidth" | "toast.progressHeight" | "chat.thread" | "chat.composer" | "chat.bubble" | "chat.attachment" | "settings.column" | "card.centered" | "scroll.bar" | "card.centeredWide" | "card.centeredForm" | "steps.image" | "checklist.maximum" | "page.maximum" | "breakpoint-sm" | "breakpoint-md" | "breakpoint-lg" | "breakpoint-xl" | "breakpoint-2xl"
23
23
 
24
- export type OpacityToken = "disabled"
24
+ export type OpacityToken = "disabled" | "locked.step" | "locked.requirement" | "disabledRound" | "checkedHover"
25
25
 
26
26
  export type FontWeightToken = "thin" | "extralight" | "light" | "normal" | "bold" | "extrabold" | "black" | "regular" | "medium" | "semibold"
27
27
 
28
- export type LetterSpacingToken = "tighter" | "tight" | "normal" | "wide" | "wider" | "widest" | "compact" | "label"
28
+ export type LetterSpacingToken = "tighter" | "tight" | "normal" | "wide" | "wider" | "widest" | "compact" | "label" | "display"
29
29
 
30
30
  export type FontToken = "serif" | "display" | "sans" | "numeric" | "mono"
31
31
 
32
32
  export type LineHeightToken = "none" | "snug" | "normal" | "relaxed" | "loose" | "tight" | "compact" | "log" | "body"
33
33
 
34
- export type FontSizeToken = "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "9xl" | "body" | "caption" | "code" | "heading" | "heading.section" | "heading.page" | "log.body" | "log.level" | "avatar.micro" | "avatar.mark" | "avatar.small" | "icon.tiny" | "icon.check" | "icon.compact" | "icon.small" | "icon.medium" | "icon.large" | "icon.rail" | "icon.display" | "icon.hero"
34
+ export type FontSizeToken = "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "9xl" | "display" | "body" | "caption" | "code" | "heading" | "heading.section" | "heading.page" | "log.body" | "log.level" | "avatar.micro" | "avatar.mark" | "avatar.small" | "icon.tiny" | "icon.check" | "icon.compact" | "icon.small" | "icon.medium" | "icon.large" | "icon.rail" | "icon.display" | "icon.hero"
35
35
 
36
36
  export type DurationToken = "fastest" | "faster" | "normal" | "slow" | "slower" | "slowest" | "fast" | "default"
37
37
 
38
38
  export type ZIndexToken = "raised" | "scrollbar" | "drawer" | "dialog" | "popover" | "tooltip" | "toast"
39
39
 
40
- export type RadiusToken = "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "full" | "round" | "keycap" | "control" | "action" | "field" | "inset" | "card" | "pill"
40
+ export type RadiusToken = "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "full" | "round" | "nav" | "keycap" | "control" | "action" | "field" | "inset" | "shell" | "card" | "pill"
41
41
 
42
42
  export type BreakpointToken = "sm" | "md" | "lg" | "xl" | "2xl"
43
43
 
44
- export type GradientToken = "skeleton" | "orb"
44
+ export type GradientToken = "skeletonFill" | "orb" | "canvas" | "panel" | "card" | "raised" | "raisedHover" | "selected" | "rowHover" | "primary" | "tinted" | "danger" | "border.raised" | "border.primary" | "border.danger" | "border.tinted" | "border.otherWorkspaceMark" | "border.selected" | "chart.area" | "chart.progress" | "chart.atRisk" | "infoGlass" | "successGlass" | "dangerGlass" | "stepDoneGlass" | "currentStageGlass" | "border.infoGlass" | "border.successGlass" | "border.dangerGlass" | "border.stepDoneGlass" | "border.currentStageGlass" | "border.warningTint" | "border.successTint" | "border.errorTint"
45
45
 
46
46
  export type Tokens = {
47
47
  aspectRatios: AspectRatioToken
@@ -155,7 +155,7 @@ export interface UtilityValues {
155
155
  transitionProperty: "common" | "colors" | "size" | "position" | "background";
156
156
  transition: "all" | "common" | "size" | "position" | "background" | "colors" | "opacity" | "shadow" | "transform";
157
157
  animation: Tokens["animations"];
158
- animationName: "ping" | "pulse" | "bounce" | "skeletonShimmer" | "spin" | "livePulse" | "wizardEnterForward" | "wizardEnterBack" | "wizardResultIn";
158
+ animationName: "ping" | "pulse" | "bounce" | "spin" | "livePulse" | "wizardEnterForward" | "wizardEnterBack" | "wizardResultIn";
159
159
  animationTimingFunction: Tokens["easings"];
160
160
  animationDuration: Tokens["durations"];
161
161
  animationDelay: Tokens["durations"];
@@ -208,7 +208,7 @@ export interface UtilityValues {
208
208
  debug: boolean;
209
209
  containerName: CssProperties["containerName"];
210
210
  ringRoom: boolean;
211
- colorPalette: "current" | "black" | "white" | "transparent" | "rose" | "pink" | "fuchsia" | "purple" | "violet" | "indigo" | "blue" | "sky" | "cyan" | "teal" | "emerald" | "green" | "lime" | "yellow" | "amber" | "orange" | "red" | "neutral" | "stone" | "zinc" | "gray" | "slate" | "bg.canvas" | "bg.panel" | "bg.card" | "bg.avatar" | "bg.backdrop" | "bg.infoSubtle" | "bg.successSubtle" | "bg.warningSubtle" | "bg.errorSubtle" | "fg.archived" | "border.subtle" | "border.focus" | "fg.primary" | "fg.muted" | "fg.secondary" | "fg.subtle" | "border.control" | "bg.field" | "bg.fieldDisabled" | "border.mark" | "border.error" | "bg.rowHover" | "bg.selected" | "bg.selectedHover" | "border.selected" | "bg.track" | "bg.knob" | "border.panel" | "border.card" | "border.glass" | "border.toolbar" | "border.hairline" | "bg.surface" | "bg.control" | "bg.pill" | "bg.glass" | "bg.glassHover" | "bg.raised" | "bg.raisedHover" | "bg.check" | "bg.hover" | "bg.fill" | "bg.primary" | "bg.primaryHover" | "bg.tinted" | "bg.danger" | "accent.brand" | "accent.green" | "accent.red" | "accent.yellow" | "accent.blue" | "accent.bronze" | "border.bronze" | "fg.onAccent";
211
+ colorPalette: "current" | "black" | "white" | "transparent" | "rose" | "pink" | "fuchsia" | "purple" | "violet" | "indigo" | "blue" | "sky" | "cyan" | "teal" | "emerald" | "green" | "lime" | "yellow" | "amber" | "orange" | "red" | "neutral" | "stone" | "zinc" | "gray" | "slate" | "bg.canvas" | "bg.panel" | "bg.card" | "bg.avatar" | "bg.backdrop" | "bg.popover" | "bg.modalShell" | "bg.modalSheet" | "bg.drawerShell" | "bg.drawerSheet" | "bg.infoSubtle" | "bg.successSubtle" | "bg.warningSubtle" | "bg.errorSubtle" | "fg.archived" | "border.subtle" | "border.focus" | "fg.primary" | "fg.muted" | "fg.secondary" | "fg.subtle" | "fg.quietGlyph" | "fg.label" | "border.control" | "border.canvas" | "border.divider" | "border.menuHover" | "bg.field" | "bg.formField" | "bg.openTrigger" | "bg.fieldDisabled" | "border.mark" | "border.error" | "bg.rowHover" | "bg.selected" | "bg.selectedHover" | "border.selected" | "bg.track" | "bg.knob" | "border.panel" | "border.card" | "border.glass" | "border.hairline" | "bg.surface" | "bg.control" | "bg.pill" | "bg.glass" | "bg.glassHover" | "bg.raised" | "bg.raisedHover" | "bg.check" | "bg.hover" | "bg.controlHover" | "bg.pressed" | "bg.fill" | "bg.primary" | "bg.primaryHover" | "bg.tinted" | "bg.danger" | "bg.warningTint" | "bg.successTint" | "bg.errorTint" | "accent.brand" | "accent.green" | "accent.greenDark" | "accent.red" | "accent.redDark" | "accent.yellow" | "accent.yellowIcon" | "accent.blue" | "accent.bronze" | "border.bronze" | "chart.bar" | "chart.trend" | "chart.category1" | "chart.category2" | "chart.category3" | "chart.category4" | "chart.barTrack" | "chart.progressTrack" | "chart.atRiskTrack" | "chart.neutral" | "chart.notStarted" | "fg.onAccent";
212
212
  textStyle: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "9xl" | "body";
213
213
  }
214
214
 
package/dist/styles.css CHANGED
@@ -37,11 +37,18 @@
37
37
  }
38
38
  }
39
39
 
40
- /* [data-edge] paints a hairline inside the element's own box, so bordered elements
41
- keep a 1px transparent border for layout and borderless groups get an inset ring. */
40
+ /* [data-edge] paints a hairline inside the element's own box. The design counts that stroke in
41
+ the layout, so an edged element keeps a 1px transparent border under the ring. A border the
42
+ element sets itself wins: a native button resetting the browser's sets `1px solid transparent`,
43
+ and a face the design lays its edge over, such as a text button, sets `border: 0`. */
42
44
  [data-ciridae-ui][data-edge] {
43
45
  position: relative;
44
46
  }
47
+ @layer base {
48
+ :where([data-ciridae-ui][data-edge]) {
49
+ border: 1px solid transparent;
50
+ }
51
+ }
45
52
  [data-ciridae-ui][data-edge]::before {
46
53
  content: "";
47
54
  position: absolute;
@@ -64,8 +71,13 @@
64
71
  [data-ciridae-ui][data-edge="control"]::before {
65
72
  background: var(--colors-border\.control);
66
73
  }
67
- [data-ciridae-ui][data-edge="toolbar"]::before {
68
- background: var(--colors-border\.toolbar);
74
+ /* data-edge="gradient" draws the gradient its element sets in --edge, such as
75
+ token(gradients.border.infoGlass). In the base layer, so a component's own
76
+ ::before background still wins. */
77
+ @layer base {
78
+ :where([data-ciridae-ui][data-edge="gradient"])::before {
79
+ background: var(--edge, none);
80
+ }
69
81
  }
70
82
  /* An open trigger draws its own border in the text color, so the ring steps aside. */
71
83
  [data-ciridae-ui][data-edge][data-popup-open]::before {
@@ -1,2 +1,5 @@
1
1
  export declare function alpha(color: string, opacity: number): string;
2
+ /** A gradient's two ends: top and bottom for a face, start and end for a bar. */
3
+ export type GradientEnds = readonly [from: string, to: string];
4
+ export declare function linearGradient(direction: "to bottom" | "to right", [from, to]: GradientEnds, opacity: number): string;
2
5
  export declare function lean(grey: string, hue: string, amount: number): string;
@@ -13,6 +13,11 @@ export function alpha(color, opacity) {
13
13
  const [red, green, blue] = parseHex(color);
14
14
  return `rgba(${red},${green},${blue},${String(opacity).replace(/^0\./, ".")})`;
15
15
  }
16
+ /* A linear gradient between two #RRGGBB ends, both at `opacity`. */
17
+ export function linearGradient(direction, [from, to], opacity) {
18
+ const paint = (color) => (opacity === 1 ? color : alpha(color, opacity));
19
+ return `linear-gradient(${direction}, ${paint(from)}, ${paint(to)})`;
20
+ }
16
21
  /*
17
22
  * A grey leaned toward a hue: the hue less its own grey is added to it at `amount`, so every grey
18
23
  * in a ramp leans the same way and keeps its lightness. Channels clip at the ends, so white and
@@ -1,5 +1,12 @@
1
- import type { Palette, ThemedColor } from "./palettes.js";
1
+ import { type Palette, type ThemedColor, type ThemedGradient } from "./palettes.js";
2
+ export declare function themedGradient(direction: "to bottom" | "to right", ends: ThemedGradient, opacity: {
3
+ base: number;
4
+ _light: number;
5
+ }): ThemedColor;
6
+ /** An edge a theme does not draw, as a gradient so it fits wherever its drawn siblings go. */
7
+ export declare const noEdge = "linear-gradient(transparent, transparent)";
2
8
  export type PaletteTokens = {
3
- colors: Record<"accent.brand" | "accent.green" | "accent.red" | "accent.yellow" | "accent.blue" | "accent.bronze" | "border.bronze" | "bg.successSubtle" | "bg.errorSubtle" | "bg.warningSubtle" | "bg.infoSubtle" | "bg.selected" | "bg.selectedHover" | "border.selected" | "bg.primary" | "bg.primaryHover" | "bg.tinted", ThemedColor>;
9
+ colors: Record<"accent.brand" | "accent.green" | "accent.greenDark" | "accent.red" | "accent.redDark" | "accent.yellow" | "accent.yellowIcon" | "accent.blue" | "accent.bronze" | "border.bronze" | "bg.successSubtle" | "bg.errorSubtle" | "bg.warningSubtle" | "bg.infoSubtle" | "bg.selected" | "bg.selectedHover" | "border.selected" | "bg.primary" | "bg.primaryHover" | "bg.tinted" | "chart.bar" | "chart.trend" | "chart.category1" | "chart.category2" | "chart.category3" | "chart.category4" | "chart.barTrack" | "chart.progressTrack" | "chart.atRiskTrack", ThemedColor>;
10
+ gradients: Record<"primary" | "tinted" | "border.tinted" | "chart.area" | "chart.progress" | "chart.atRisk", ThemedColor>;
4
11
  };
5
12
  export declare function derivePaletteTokens(palette: Palette): PaletteTokens;
@@ -1,36 +1,70 @@
1
- import { alpha } from "./color.js";
1
+ import { alpha, linearGradient } from "./color.js";
2
+ import { chartIndigo, } from "./palettes.js";
2
3
  function themed(color, map) {
3
4
  return { base: map(color.base, "base"), _light: map(color._light, "_light") };
4
5
  }
6
+ /* A gradient token from its ends, with each color theme at its own opacity. */
7
+ export function themedGradient(direction, ends, opacity) {
8
+ return {
9
+ base: linearGradient(direction, ends.base, opacity.base),
10
+ _light: linearGradient(direction, ends._light, opacity._light),
11
+ };
12
+ }
13
+ /* A flat color as a gradient, so a face with no gradient still fits where a gradient goes. */
14
+ function flatGradient(color) {
15
+ return { base: [color.base, color.base], _light: [color._light, color._light] };
16
+ }
17
+ /** An edge a theme does not draw, as a gradient so it fits wherever its drawn siblings go. */
18
+ export const noEdge = "linear-gradient(transparent, transparent)";
19
+ /* A palette with no chart of its own draws its marks in its status hues, flat. */
20
+ function chartFromStatusHues(status) {
21
+ return {
22
+ bar: status.blue.text,
23
+ trend: status.blue.text,
24
+ area: flatGradient(status.blue.text),
25
+ categories: [status.yellow.text, status.green.text, chartIndigo, status.red.text],
26
+ progress: flatGradient(status.blue.text),
27
+ atRisk: flatGradient(status.yellow.text),
28
+ };
29
+ }
5
30
  /*
6
- * The subtle status backgrounds are the hue at a twelfth in dark and a tenth in light. A selected
7
- * row, tab or card is washed with the accent a little under that, so it reads apart from a grey
8
- * hover; its edge is the accent at a third. The bronze hairline is the dark bronze in both
9
- * themes, at a third and a bit under; the light bronze is too grey for it. Light has no hover on
10
- * the primary face; dark lets a little of the surface through. The tinted face is warm glass:
11
- * faint over the dark surface, nearly solid in light.
31
+ * The subtle status backgrounds are the hue at a tenth in both themes, but for blue: .15 in dark
32
+ * and .08 in light. A selected row, tab or card is washed with a neutral ink a little under that,
33
+ * so it reads apart from a grey hover; its edge is the ink at a fifth or so. The bronze hairline is
34
+ * the dark bronze in both themes, at a third and a bit under; the light bronze is too grey for
35
+ * it. Light has no hover on the primary face; dark lets a little of the surface through. The
36
+ * tinted face is warm glass: faint over the dark surface, nearly solid in light; its edge is
37
+ * stronger in dark. A progress bar's track is its hue at .15 in dark and a fifth in light.
12
38
  */
13
39
  /** The ink a selection wash is mixed from: white over the dark theme, near-black over light. */
14
40
  const selectionInk = { base: "#FFFFFF", _light: "#37373A" };
15
41
  export function derivePaletteTokens(palette) {
16
42
  const { accent, primary, status, bronze, tint } = palette;
17
- const wash = (name) => themed(status[name].wash ?? status[name].text, (color, theme) => alpha(color, theme === "base" ? 0.12 : 0.1));
43
+ const chart = palette.chart ?? chartFromStatusHues(status);
44
+ const wash = (name, opacity) => themed(status[name].wash ?? status[name].text, (color, theme) => alpha(color, opacity[theme]));
45
+ const track = (hue) => themed(hue, (color, theme) => alpha(color, theme === "base" ? 0.15 : 0.2));
46
+ const [category1, category2, category3, category4] = chart.categories;
18
47
  return {
19
48
  colors: {
20
49
  "accent.brand": accent,
21
50
  "accent.green": status.green.text,
51
+ // The deeper green and red of a label on the hue's tint, such as a tinted button's.
52
+ "accent.greenDark": status.green.dark ?? status.green.text,
22
53
  "accent.red": status.red.text,
54
+ "accent.redDark": status.red.dark ?? status.red.text,
55
+ // Yellow text, and the brighter yellow of its icons, dots and rings.
23
56
  "accent.yellow": status.yellow.text,
57
+ "accent.yellowIcon": status.yellow.icon ?? status.yellow.text,
24
58
  "accent.blue": status.blue.text,
25
59
  "accent.bronze": bronze,
26
60
  "border.bronze": {
27
61
  base: alpha(bronze.base, 0.33),
28
62
  _light: alpha(bronze.base, 0.28),
29
63
  },
30
- "bg.successSubtle": wash("green"),
31
- "bg.errorSubtle": wash("red"),
32
- "bg.warningSubtle": wash("yellow"),
33
- "bg.infoSubtle": wash("blue"),
64
+ "bg.successSubtle": wash("green", { base: 0.1, _light: 0.1 }),
65
+ "bg.errorSubtle": wash("red", { base: 0.1, _light: 0.1 }),
66
+ "bg.warningSubtle": wash("yellow", { base: 0.1, _light: 0.1 }),
67
+ "bg.infoSubtle": wash("blue", { base: 0.15, _light: 0.08 }),
34
68
  // A neutral grey wash, whatever the accent: selection reads as state, not as brand color.
35
69
  "bg.selected": themed(selectionInk, (color, theme) => alpha(color, theme === "base" ? 0.08 : 0.07)),
36
70
  "bg.selectedHover": themed(selectionInk, (color, theme) => alpha(color, theme === "base" ? 0.12 : 0.1)),
@@ -38,6 +72,32 @@ export function derivePaletteTokens(palette) {
38
72
  "bg.primary": primary,
39
73
  "bg.primaryHover": { base: alpha(primary.base, 0.88), _light: primary._light },
40
74
  "bg.tinted": { base: alpha(tint.face.base, 0.1), _light: alpha(tint.face._light, 0.66) },
75
+ "chart.bar": chart.bar,
76
+ "chart.trend": chart.trend,
77
+ "chart.category1": category1,
78
+ "chart.category2": category2,
79
+ "chart.category3": category3,
80
+ "chart.category4": category4,
81
+ // A past column under the current one: the bar's hue on its track.
82
+ "chart.barTrack": track(chart.bar),
83
+ "chart.progressTrack": track(chart.trend),
84
+ "chart.atRiskTrack": track(category1),
85
+ },
86
+ gradients: {
87
+ primary: themedGradient("to bottom", palette.primaryGradient ?? flatGradient(primary), {
88
+ base: 1,
89
+ _light: 1,
90
+ }),
91
+ tinted: themedGradient("to bottom", tint.faceGradient ?? flatGradient(tint.face), {
92
+ base: 0.1,
93
+ _light: 0.66,
94
+ }),
95
+ "border.tinted": tint.edge
96
+ ? themedGradient("to bottom", tint.edge, { base: 0.6, _light: 0.33 })
97
+ : { base: noEdge, _light: noEdge },
98
+ "chart.area": themedGradient("to bottom", chart.area, { base: 0.1, _light: 0.2 }),
99
+ "chart.progress": themedGradient("to right", chart.progress, { base: 1, _light: 1 }),
100
+ "chart.atRisk": themedGradient("to right", chart.atRisk, { base: 1, _light: 1 }),
41
101
  },
42
102
  };
43
103
  }
@@ -1,13 +1,19 @@
1
+ import { type GradientEnds } from "./color.js";
1
2
  /** A color per color theme, in the shape Panda's semantic tokens take. */
2
3
  export type ThemedColor = {
3
4
  base: string;
4
5
  _light: string;
5
6
  };
7
+ /** A gradient's two ends per color theme. A face flat under a theme has one color at both ends. */
8
+ export type ThemedGradient = {
9
+ base: GradientEnds;
10
+ _light: GradientEnds;
11
+ };
6
12
  export declare const PALETTE_NAMES: readonly ["ciridae", "ocean", "moss", "violet", "ember"];
7
13
  export type PaletteName = (typeof PALETTE_NAMES)[number];
8
14
  /**
9
- * The greys under one color theme: every neutral token is one of these, flat or at an alpha. Dark
10
- * draws its glass as pale greys over the surface; light draws solids.
15
+ * The greys under one color theme: every neutral token is one of these, flat, at an alpha or as a
16
+ * gradient's end. Dark draws its glass as pale greys over the surface; light draws solids.
11
17
  */
12
18
  export type Greys = {
13
19
  canvas: string;
@@ -25,6 +31,7 @@ export type Greys = {
25
31
  cardBorder: string;
26
32
  mark: string;
27
33
  hairline: string;
34
+ menuHoverBorder: string;
28
35
  wash: string;
29
36
  shade: string;
30
37
  focus: string;
@@ -35,6 +42,13 @@ export type Greys = {
35
42
  raised: string;
36
43
  hover: string;
37
44
  knob: string;
45
+ scrim: string;
46
+ popover: string;
47
+ modalShell: string;
48
+ modalSheet: string;
49
+ drawerShell: string;
50
+ drawerSheet: string;
51
+ gradients: Record<"canvas" | "panel" | "raised" | "selected", GradientEnds>;
38
52
  };
39
53
  export type GreyRamp = {
40
54
  dark: Greys;
@@ -47,14 +61,43 @@ export type GreyRamp = {
47
61
  export type Palette = {
48
62
  greys: GreyRamp;
49
63
  accent: ThemedColor;
64
+ focusRing?: ThemedColor;
50
65
  primary: ThemedColor;
51
- status: Record<"green" | "red" | "yellow" | "blue", {
52
- text: ThemedColor;
53
- wash?: ThemedColor;
54
- }>;
66
+ primaryGradient?: ThemedGradient;
67
+ status: {
68
+ green: StatusHue & {
69
+ dark?: ThemedColor;
70
+ };
71
+ red: StatusHue & {
72
+ dark?: ThemedColor;
73
+ };
74
+ yellow: StatusHue & {
75
+ icon?: ThemedColor;
76
+ };
77
+ blue: StatusHue;
78
+ };
55
79
  bronze: ThemedColor;
56
80
  tint: {
57
81
  face: ThemedColor;
82
+ faceGradient?: ThemedGradient;
83
+ edge?: ThemedGradient;
58
84
  };
85
+ chart?: ChartHues;
86
+ };
87
+ type StatusHue = {
88
+ text: ThemedColor;
89
+ wash?: ThemedColor;
90
+ };
91
+ /** Data marks, never UI. */
92
+ export type ChartHues = {
93
+ bar: ThemedColor;
94
+ trend: ThemedColor;
95
+ area: ThemedGradient;
96
+ categories: readonly [ThemedColor, ThemedColor, ThemedColor, ThemedColor];
97
+ progress: ThemedGradient;
98
+ atRisk: ThemedGradient;
59
99
  };
100
+ /** The third chart category: no status hue is indigo, so every palette shares this one. */
101
+ export declare const chartIndigo: ThemedColor;
60
102
  export declare const palettes: Record<PaletteName, Palette>;
103
+ export {};