@mitcsutt/kiln-ui 0.3.0 → 0.4.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 (100) hide show
  1. package/dist/components/actions/Button/Button.module.js.map +1 -1
  2. package/dist/components/actions/ToggleChip/ToggleChip.d.ts +5 -0
  3. package/dist/components/actions/ToggleChip/ToggleChip.js +10 -6
  4. package/dist/components/actions/ToggleChip/ToggleChip.js.map +1 -1
  5. package/dist/components/actions/ToggleChip/chip.module.js +4 -3
  6. package/dist/components/actions/ToggleChip/chip.module.js.map +1 -1
  7. package/dist/components/display/AvatarGroup/AvatarGroup.d.ts +2 -2
  8. package/dist/components/display/AvatarGroup/AvatarGroup.js +1 -1
  9. package/dist/components/display/AvatarGroup/AvatarGroup.js.map +1 -1
  10. package/dist/components/display/Card/Card.d.ts +7 -4
  11. package/dist/components/display/Card/Card.js +8 -7
  12. package/dist/components/display/Card/Card.js.map +1 -1
  13. package/dist/components/display/Card/Card.module.js.map +1 -1
  14. package/dist/components/display/List/List.d.ts +10 -5
  15. package/dist/components/display/List/List.js +49 -40
  16. package/dist/components/display/List/List.js.map +1 -1
  17. package/dist/components/display/List/List.module.js.map +1 -1
  18. package/dist/components/display/Marquee/Marquee.js +1 -1
  19. package/dist/components/display/Marquee/Marquee.js.map +1 -1
  20. package/dist/components/display/Media/Media.d.ts +13 -0
  21. package/dist/components/display/Media/Media.js +23 -19
  22. package/dist/components/display/Media/Media.js.map +1 -1
  23. package/dist/components/display/Media/Media.module.js.map +1 -1
  24. package/dist/components/display/Media/index.d.ts +1 -1
  25. package/dist/components/display/Stat/Stat.module.js.map +1 -1
  26. package/dist/components/display/Table/Table.d.ts +6 -1
  27. package/dist/components/display/Table/Table.js +6 -4
  28. package/dist/components/display/Table/Table.js.map +1 -1
  29. package/dist/components/display/Table/Table.module.js.map +1 -1
  30. package/dist/components/display/Tag/Tag.d.ts +3 -0
  31. package/dist/components/display/Tag/Tag.js +11 -10
  32. package/dist/components/display/Tag/Tag.js.map +1 -1
  33. package/dist/components/display/Tag/Tag.module.js.map +1 -1
  34. package/dist/components/display/Tag/index.d.ts +1 -1
  35. package/dist/components/feedback/Flash/Flash.d.ts +47 -0
  36. package/dist/components/feedback/Flash/Flash.js +36 -0
  37. package/dist/components/feedback/Flash/Flash.js.map +1 -0
  38. package/dist/components/feedback/Flash/Flash.module.js +10 -0
  39. package/dist/components/feedback/Flash/Flash.module.js.map +1 -0
  40. package/dist/components/feedback/Flash/index.d.ts +2 -0
  41. package/dist/components/feedback/RelativeTime/RelativeTime.d.ts +7 -0
  42. package/dist/components/feedback/RelativeTime/RelativeTime.js +11 -11
  43. package/dist/components/feedback/RelativeTime/RelativeTime.js.map +1 -1
  44. package/dist/components/feedback/StatusDot/StatusDot.d.ts +1 -1
  45. package/dist/components/feedback/StatusDot/StatusDot.js.map +1 -1
  46. package/dist/components/inputs/ChoiceCards/ChoiceCards.js +9 -9
  47. package/dist/components/inputs/Combobox/Combobox.js +5 -5
  48. package/dist/components/inputs/PasswordInput/PasswordInput.js +4 -4
  49. package/dist/components/layout/AppShell/AppShell.d.ts +4 -1
  50. package/dist/components/layout/AppShell/AppShell.js +58 -44
  51. package/dist/components/layout/AppShell/AppShell.js.map +1 -1
  52. package/dist/components/layout/AppShell/AppShell.module.js.map +1 -1
  53. package/dist/components/layout/Box/Box.d.ts +6 -3
  54. package/dist/components/layout/Box/Box.js.map +1 -1
  55. package/dist/components/layout/Box/Box.module.js.map +1 -1
  56. package/dist/components/layout/Divider/Divider.d.ts +7 -1
  57. package/dist/components/layout/Divider/Divider.js +18 -20
  58. package/dist/components/layout/Divider/Divider.js.map +1 -1
  59. package/dist/components/layout/Section/Section.d.ts +8 -6
  60. package/dist/components/layout/Section/Section.js.map +1 -1
  61. package/dist/components/layout/Section/Section.module.js.map +1 -1
  62. package/dist/components/navigation/Accordion/Accordion.d.ts +6 -1
  63. package/dist/components/navigation/Accordion/Accordion.js +19 -11
  64. package/dist/components/navigation/Accordion/Accordion.js.map +1 -1
  65. package/dist/components/navigation/Accordion/Accordion.module.js +7 -6
  66. package/dist/components/navigation/Accordion/Accordion.module.js.map +1 -1
  67. package/dist/components/navigation/NavLinks/NavLinks.d.ts +4 -1
  68. package/dist/components/navigation/NavLinks/NavLinks.js.map +1 -1
  69. package/dist/components/navigation/NavLinks/NavLinks.module.js.map +1 -1
  70. package/dist/components/overlays/Tooltip/Tooltip.d.ts +23 -0
  71. package/dist/components/overlays/Tooltip/Tooltip.js +77 -31
  72. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  73. package/dist/components/typography/Numeral/Numeral.d.ts +26 -2
  74. package/dist/components/typography/Numeral/Numeral.js +25 -21
  75. package/dist/components/typography/Numeral/Numeral.js.map +1 -1
  76. package/dist/components/typography/Numeral/Numeral.module.js +4 -3
  77. package/dist/components/typography/Numeral/Numeral.module.js.map +1 -1
  78. package/dist/components/typography/Text/Text.d.ts +5 -2
  79. package/dist/components/typography/Text/Text.js.map +1 -1
  80. package/dist/components/typography/Text/Text.module.js.map +1 -1
  81. package/dist/icons/Icon.js +1 -0
  82. package/dist/icons/Icon.js.map +1 -1
  83. package/dist/icons/icons.d.ts +12 -0
  84. package/dist/icons/icons.js +63 -13
  85. package/dist/icons/icons.js.map +1 -1
  86. package/dist/index.d.ts +16 -23
  87. package/dist/index.js +113 -112
  88. package/dist/styles.css +1 -1
  89. package/dist/themes/fiesta.css +1 -1
  90. package/dist/utils/tokens.d.ts +2 -0
  91. package/dist/utils/tokens.js.map +1 -1
  92. package/package.json +2 -2
  93. package/skills/custom-theme/SKILL.md +1 -1
  94. package/skills/design-rules/SKILL.md +7 -4
  95. package/skills/layout-composition/references/app-shell.md +2 -2
  96. package/skills/layout-composition/references/box.md +1 -1
  97. package/skills/layout-composition/references/divider.md +30 -1
  98. package/skills/layout-composition/references/section.md +23 -2
  99. package/skills/setup-and-theming/SKILL.md +3 -3
  100. package/skills/setup-and-theming/references/fiesta.md +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","names":["TooltipPrimitive","styles","Tooltip","Tooltip_module_default","HasProvider","createContext","TooltipProvider","rest","Tooltip","ContentInner","forwardRef","theme","usePortalTheme","container","cx","className","children","Tooltip$1","hasProvider","useContext","anchor","usePortalAnchorRef","tooltip","PortalAnchorContext","delay","composeRefs","content"],"sources":["../../../../src/components/overlays/Tooltip/Tooltip.tsx"],"sourcesContent":["import {\n createContext,\n forwardRef,\n useContext,\n type ComponentPropsWithoutRef,\n type ReactElement,\n type ReactNode,\n} from 'react'\nimport { Tooltip as TooltipPrimitive } from 'radix-ui'\nimport { cx } from '#utils/cx'\nimport {\n PortalAnchorContext,\n composeRefs,\n usePortalAnchorRef,\n usePortalTheme,\n} from '#components/overlays/usePortalTheme'\nimport styles from './Tooltip.module.css'\n\nconst HasProvider = createContext(false)\n\nexport type TooltipProviderProps = ComponentPropsWithoutRef<typeof TooltipPrimitive.Provider>\n\n/**\n * Shares open/skip delays between tooltips, so moving along a toolbar shows each hint\n * instantly after the first. Put one near the app root. Tooltips work without it.\n */\nexport function TooltipProvider({\n delayDuration = 500,\n skipDelayDuration = 300,\n ...rest\n}: TooltipProviderProps) {\n return (\n <HasProvider.Provider value>\n <TooltipPrimitive.Provider\n delayDuration={delayDuration}\n skipDelayDuration={skipDelayDuration}\n {...rest}\n />\n </HasProvider.Provider>\n )\n}\n\nexport type TooltipSide = 'top' | 'right' | 'bottom' | 'left'\nexport type TooltipAlign = 'start' | 'center' | 'end'\n\nexport interface TooltipProps extends Omit<\n ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>,\n 'content' | 'side' | 'align' | 'children'\n> {\n /** The hint. Short — a label or one sentence. It's announced as the trigger's description. */\n content: ReactNode\n /**\n * The trigger: a single focusable element (a button or link). It receives the ref and\n * event handlers, so custom components must forward both.\n */\n children: ReactElement\n side?: TooltipSide\n align?: TooltipAlign\n /** Hover delay before opening, in ms. Keyboard focus opens immediately. */\n delay?: number\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n /** Portal target. Defaults to `document.body`; its theme scope is also used. */\n container?: HTMLElement | null\n}\n\nconst ContentInner = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> & { container?: HTMLElement | null }\n>(function ContentInner({ container, className, children, ...rest }, ref) {\n const theme = usePortalTheme(container)\n return (\n <TooltipPrimitive.Content\n ref={ref}\n className={cx(styles.content, className)}\n collisionPadding={8}\n {...theme}\n {...rest}\n >\n {children}\n <TooltipPrimitive.Arrow className={styles.arrow} width={10} height={5} />\n </TooltipPrimitive.Content>\n )\n})\n\n/**\n * A short label that appears on hover and keyboard focus. Never for anything interactive.\n *\n * @remarks\n * `Tooltip` shows a short label beside its trigger on hover and on keyboard focus. It's portalled,\n * so an `overflow: hidden` parent never clips it. Keep it to a few words, and never put anything\n * interactive in it: use a {@link Popover | Popover} for that.\n *\n * @privateRemarks\n * A small label that appears on hover and on keyboard focus. Portalled, so it's never\n * clipped by an `overflow: hidden` card. Not for anything interactive — use `Popover`.\n *\n * <Tooltip content=\"Copy link\"><IconButton … /></Tooltip>\n */\nexport const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(function Tooltip(\n {\n content,\n children,\n side = 'top',\n align = 'center',\n delay,\n open,\n defaultOpen,\n onOpenChange,\n container,\n sideOffset = 6,\n ...rest\n },\n ref,\n) {\n const hasProvider = useContext(HasProvider)\n const anchor = usePortalAnchorRef()\n const tooltip = (\n <PortalAnchorContext.Provider value={anchor}>\n <TooltipPrimitive.Root\n delayDuration={delay}\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n >\n <TooltipPrimitive.Trigger asChild ref={composeRefs(anchor)}>\n {children}\n </TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal container={container}>\n <ContentInner\n ref={ref}\n container={container}\n side={side}\n align={align}\n sideOffset={sideOffset}\n {...rest}\n >\n {content}\n </ContentInner>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n </PortalAnchorContext.Provider>\n )\n return hasProvider ? tooltip : <TooltipProvider>{tooltip}</TooltipProvider>\n})\n"],"mappings":";;;;;;;AAkBA,IAAMI,IAAcC,EAAc,EAAK;AAQvC,SAAgBC,EAAgB,EAC9B,mBAAgB,KAChB,uBAAoB,KACpB,GAAGC,KACoB;CACvB,OACE,kBAACH,EAAY,UAAb;EAAsB,OAAA;EACpB,UAAA,kBAACJ,EAAiB,UAAlB;GACiB;GACI;GACnB,GAAIO;EACL,CAAA;CACmB,CAAA;AAE1B;AA2BA,IAAME,IAAeC,EAGnB,SAAsB,EAAE,cAAW,cAAW,aAAU,GAAGH,KAAQ,GAAK;CACxE,IAAMI,IAAQC,EAAeC,CAAS;CACtC,OACE,kBAACb,EAAiB,SAAlB;EACO;EACL,WAAWc,EAAGb,EAAO,SAASc,CAAS;EACvC,kBAAkB;EAClB,GAAIJ;EACJ,GAAIJ;EALN,UAAA,CAOGS,GACD,kBAAChB,EAAiB,OAAlB;GAAwB,WAAWC,EAAO;GAAO,OAAO;GAAI,QAAQ;EAAI,CAAA,CAChD;;AAE9B,CAAC,GAgBYC,IAAUQ,EAAyC,SAC9D,EACE,YACA,aACA,UAAO,OACP,WAAQ,UACR,UACA,SACA,gBACA,iBACA,cACA,gBAAa,GACb,GAAGH,KAEL,GACA;CACA,IAAMW,IAAcC,EAAWf,CAAW,GACpCgB,IAASC,EAAmB,GAC5BC,IACJ,kBAACC,EAAoB,UAArB;EAA8B,OAAOH;EACnC,UAAA,kBAACpB,EAAiB,MAAlB;GACE,eAAewB;GACT;GACO;GACC;GAJhB,UAAA,CAME,kBAACxB,EAAiB,SAAlB;IAA0B,SAAA;IAAQ,KAAKyB,EAAYL,CAAM;IACtD;GACuB,CAAA,GAC1B,kBAACpB,EAAiB,QAAlB;IAAoC;IAClC,UAAA,kBAACS,GAAD;KACO;KACM;KACL;KACC;KACK;KACZ,GAAIF;KAEH,UAAAmB;IACW,CAAA;GACS,CAAA,CACJ;;CACK,CAAA;CAEhC,OAAOR,IAAcI,IAAU,kBAAChB,GAAD,EAAA,UAAkBgB,EAAyB,CAAA;AAC5E,CAAC"}
1
+ {"version":3,"file":"Tooltip.js","names":["TooltipPrimitive","styles","Tooltip","Tooltip_module_default","HasProvider","createContext","TooltipProvider","rest","Tooltip","LONG_PRESS","PRESS_SLOP","RELEASE_WINDOW","ContentInner","forwardRef","theme","usePortalTheme","container","cx","className","children","Tooltip$1","hasProvider","useContext","anchor","usePortalAnchorRef","uncontrolled","setUncontrolled","useState","defaultOpen","isOpen","open","setOpen","next","onOpenChange","press","useLongPress","touch","disabled","isValidElement","trigger","cloneElement","block","event","tooltip","PortalAnchorContext","delay","composeRefs","content","timer","useRef","start","fired","releasedAt","cancel","useEffect","enabled","release","swallow","released","onLongPress","from"],"sources":["../../../../src/components/overlays/Tooltip/Tooltip.tsx"],"sourcesContent":["import {\n cloneElement,\n createContext,\n forwardRef,\n isValidElement,\n useContext,\n useEffect,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type KeyboardEvent,\n type PointerEvent,\n type ReactElement,\n type ReactNode,\n type SyntheticEvent,\n} from 'react'\nimport { Tooltip as TooltipPrimitive } from 'radix-ui'\nimport { cx } from '#utils/cx'\nimport {\n PortalAnchorContext,\n composeRefs,\n usePortalAnchorRef,\n usePortalTheme,\n} from '#components/overlays/usePortalTheme'\nimport styles from './Tooltip.module.css'\n\nconst HasProvider = createContext(false)\n\nexport type TooltipProviderProps = ComponentPropsWithoutRef<typeof TooltipPrimitive.Provider>\n\n/**\n * Shares open/skip delays between tooltips, so moving along a toolbar shows each hint\n * instantly after the first. Put one near the app root. Tooltips work without it.\n */\nexport function TooltipProvider({\n delayDuration = 500,\n skipDelayDuration = 300,\n ...rest\n}: TooltipProviderProps) {\n return (\n <HasProvider.Provider value>\n <TooltipPrimitive.Provider\n delayDuration={delayDuration}\n skipDelayDuration={skipDelayDuration}\n {...rest}\n />\n </HasProvider.Provider>\n )\n}\n\nexport type TooltipSide = 'top' | 'right' | 'bottom' | 'left'\nexport type TooltipTouch = 'none' | 'longpress'\n\n/** How long a touch must be held before a `touch=\"longpress\"` tooltip opens, in ms. */\nconst LONG_PRESS = 500\n/** How far a touch may drift, in px, and still count as a press rather than a scroll. */\nconst PRESS_SLOP = 10\n/** How long after a long press ends its click or context menu is still swallowed, in ms. */\nconst RELEASE_WINDOW = 1000\nexport type TooltipAlign = 'start' | 'center' | 'end'\n\nexport interface TooltipProps extends Omit<\n ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>,\n 'content' | 'side' | 'align' | 'children'\n> {\n /** The hint. Short — a label or one sentence. It's announced as the trigger's description. */\n content: ReactNode\n /**\n * The trigger: a single focusable element (a button or link). It receives the ref and\n * event handlers, so custom components must forward both.\n */\n children: ReactElement\n side?: TooltipSide\n align?: TooltipAlign\n /** Hover delay before opening, in ms. Keyboard focus opens immediately. */\n delay?: number\n /**\n * What a touch does. Hover and focus don't exist on a phone, so by default (`none`) a touch\n * never opens a tooltip. `longpress` opens it when the trigger is held for half a second, and\n * swallows the tap that follows, so the press doesn't also act. A tap elsewhere closes it.\n */\n touch?: TooltipTouch\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n /** Portal target. Defaults to `document.body`; its theme scope is also used. */\n container?: HTMLElement | null\n}\n\nconst ContentInner = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> & { container?: HTMLElement | null }\n>(function ContentInner({ container, className, children, ...rest }, ref) {\n const theme = usePortalTheme(container)\n return (\n <TooltipPrimitive.Content\n ref={ref}\n className={cx(styles.content, className)}\n collisionPadding={8}\n {...theme}\n {...rest}\n >\n {children}\n <TooltipPrimitive.Arrow className={styles.arrow} width={10} height={5} />\n </TooltipPrimitive.Content>\n )\n})\n\n/**\n * A short label that appears on hover and keyboard focus. Never for anything interactive.\n *\n * @remarks\n * `Tooltip` shows a short label beside its trigger on hover and on keyboard focus. It's portalled,\n * so an `overflow: hidden` parent never clips it. Keep it to a few words, and never put anything\n * interactive in it: use a {@link Popover | Popover} for that.\n *\n * ## On touch screens\n *\n * A phone has no hover, so a tooltip never opens on a tap. With `touch=\"longpress\"` it opens\n * when the trigger is held for half a second, and the tap that ends the press is swallowed, so\n * holding a button to see who reacted doesn't also press it. Don't hide anything essential in a\n * tooltip: a long press is easy to miss.\n *\n * ## On disabled triggers\n *\n * A disabled button gets no pointer or focus events, so a tooltip on it could never open. When\n * the trigger is `disabled`, `Tooltip` marks it `aria-disabled` instead and blocks its clicks\n * and key presses, so it still looks and announces as disabled, but hover, focus and long press\n * reach it and the reason it's disabled (\"You've used all three reactions\") reaches every\n * reader. It's the same element either way, so a trigger that's disabled while a request is\n * pending keeps keyboard focus.\n *\n * @privateRemarks\n * A small label that appears on hover and on keyboard focus. Portalled, so it's never\n * clipped by an `overflow: hidden` card. Not for anything interactive — use `Popover`.\n *\n * <Tooltip content=\"Copy link\"><IconButton … /></Tooltip>\n */\nexport const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(function Tooltip(\n {\n content,\n children,\n side = 'top',\n align = 'center',\n delay,\n touch = 'none',\n open,\n defaultOpen,\n onOpenChange,\n container,\n sideOffset = 6,\n ...rest\n },\n ref,\n) {\n const hasProvider = useContext(HasProvider)\n const anchor = usePortalAnchorRef()\n const [uncontrolled, setUncontrolled] = useState(defaultOpen ?? false)\n const isOpen = open ?? uncontrolled\n const setOpen = (next: boolean) => {\n if (open === undefined) setUncontrolled(next)\n onOpenChange?.(next)\n }\n const press = useLongPress(touch === 'longpress', () => {\n setOpen(true)\n })\n const disabled =\n isValidElement<{ disabled?: unknown }>(children) && children.props.disabled === true\n // Disabled stays focusable (aria-disabled) and on the same element, so focus survives a\n // disabled toggle and the hint still opens; activation is blocked here instead.\n const trigger = disabled\n ? cloneElement(children as ReactElement<Record<string, unknown>>, {\n disabled: false,\n 'aria-disabled': true,\n })\n : children\n const block = disabled\n ? {\n onClickCapture: (event: SyntheticEvent) => {\n event.preventDefault()\n event.stopPropagation()\n },\n onKeyDownCapture: (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n event.stopPropagation()\n }\n },\n }\n : {}\n const tooltip = (\n <PortalAnchorContext.Provider value={anchor}>\n <TooltipPrimitive.Root delayDuration={delay} open={isOpen} onOpenChange={setOpen}>\n <TooltipPrimitive.Trigger asChild ref={composeRefs(anchor)} {...press} {...block}>\n {trigger}\n </TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal container={container}>\n <ContentInner\n ref={ref}\n container={container}\n side={side}\n align={align}\n sideOffset={sideOffset}\n {...rest}\n >\n {content}\n </ContentInner>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n </PortalAnchorContext.Provider>\n )\n return hasProvider ? tooltip : <TooltipProvider>{tooltip}</TooltipProvider>\n})\n\n/**\n * Long-press handlers for a trigger: a touch held still for LONG_PRESS opens the tooltip, and\n * the click that ends that press (and the phone's context menu) is swallowed.\n */\nfunction useLongPress(enabled: boolean, onLongPress: () => void) {\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined)\n const start = useRef<{ x: number; y: number } | null>(null)\n const fired = useRef(false)\n const releasedAt = useRef<number | undefined>(undefined)\n const cancel = () => {\n clearTimeout(timer.current)\n start.current = null\n }\n useEffect(() => cancel, [])\n if (!enabled) return {}\n const release = (event: PointerEvent) => {\n cancel()\n if (fired.current) releasedAt.current = event.timeStamp\n }\n const swallow = (event: SyntheticEvent) => {\n if (!fired.current) return\n const released = releasedAt.current\n if (released !== undefined) {\n fired.current = false\n if (event.timeStamp - released > RELEASE_WINDOW) return\n }\n event.preventDefault()\n event.stopPropagation()\n }\n return {\n onPointerDown: (event: PointerEvent) => {\n fired.current = false\n releasedAt.current = undefined\n if (event.pointerType !== 'touch') return\n start.current = { x: event.clientX, y: event.clientY }\n clearTimeout(timer.current)\n timer.current = setTimeout(() => {\n fired.current = true\n start.current = null\n onLongPress()\n }, LONG_PRESS)\n },\n onPointerMove: (event: PointerEvent) => {\n const from = start.current\n if (from && Math.hypot(event.clientX - from.x, event.clientY - from.y) > PRESS_SLOP) cancel()\n },\n onPointerUp: release,\n onPointerCancel: release,\n onClickCapture: swallow,\n onContextMenu: swallow,\n }\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type DataHTMLAttributes, type ReactNode } from 'react';
2
- export type NumeralTone = 'auto' | 'default' | 'muted' | 'accent' | 'positive' | 'caution' | 'critical';
2
+ export type NumeralTone = 'auto' | 'default' | 'muted' | 'accent' | 'positive' | 'caution' | 'critical' | 'highlight';
3
3
  export type NumeralSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'display-sm' | 'display-md' | 'display-lg';
4
4
  export interface NumeralProps extends Omit<DataHTMLAttributes<HTMLDataElement>, 'value' | 'children' | 'prefix'> {
5
5
  value: number;
@@ -9,7 +9,11 @@ export interface NumeralProps extends Omit<DataHTMLAttributes<HTMLDataElement>,
9
9
  locale?: string;
10
10
  /** Shorthand for `format.signDisplay`. `exceptZero` shows +/− on everything but zero. */
11
11
  signDisplay?: Intl.NumberFormatOptions['signDisplay'];
12
- /** `auto` colours by sign: positive → positive tone, negative → critical. Omit to inherit. */
12
+ /**
13
+ * `auto` colours by sign: positive → positive tone, negative → critical. `highlight` sets the
14
+ * figure on the theme's highlight, like a marker pen, for the one figure that's "you" or first.
15
+ * Omit to inherit.
16
+ */
13
17
  tone?: NumeralTone;
14
18
  /** Step on the type scale. Omit to inherit — figures usually sit inside other text. */
15
19
  size?: NumeralSize;
@@ -17,6 +21,11 @@ export interface NumeralProps extends Omit<DataHTMLAttributes<HTMLDataElement>,
17
21
  prefix?: ReactNode;
18
22
  /** Set after the figures, proportional: " seats", "×", " km". Add your own spacing. */
19
23
  suffix?: ReactNode;
24
+ /**
25
+ * A small figure after the main one, part of the same reading: the shootout in "1 (4)", the
26
+ * games played beside a total. Set smaller and muted, after a space.
27
+ */
28
+ annotation?: ReactNode;
20
29
  }
21
30
  /**
22
31
  * A formatted number in tabular figures, with its machine-readable value attached.
@@ -26,6 +35,21 @@ export interface NumeralProps extends Omit<DataHTMLAttributes<HTMLDataElement>,
26
35
  * tabular, lining figures, so a column of them lines up and a changing value doesn't jitter. It
27
36
  * renders a `<data value>` element, so the raw value travels with the formatted text.
28
37
  *
38
+ * ## Testing
39
+ *
40
+ * Signs, decimal marks, separators and affixes are set in their own spans, and Testing Library's
41
+ * `getByText` matches an element's own text only, so `getByText('90.5')` won't find a `Numeral`
42
+ * showing 90.5. Match the `<data>` element's whole text, or its raw `value`:
43
+ *
44
+ * ```tsx
45
+ * import { render } from '@testing-library/react'
46
+ * import { Numeral } from '@mitcsutt/kiln-ui'
47
+ *
48
+ * const { container, getByText } = render(<Numeral value={90.5} signDisplay="always" />)
49
+ * getByText((_, el) => el?.tagName === 'DATA' && el.textContent === '+90.5')
50
+ * container.querySelector('data[value="90.5"]')
51
+ * ```
52
+ *
29
53
  * @privateRemarks
30
54
  * A formatted number. Always tabular, lining figures in the theme's numeric face, and
31
55
  * wrapped in <data value> so the machine-readable value travels with it. Separators
@@ -2,40 +2,44 @@ import { cx as e } from "../../../utils/cx.js";
2
2
  import { formatNumeralParts as t, signOf as n } from "./format.js";
3
3
  import r from "./Numeral.module.js";
4
4
  import { Fragment as i, forwardRef as a } from "react";
5
- import { jsx as o, jsxs as s } from "react/jsx-runtime";
5
+ import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
6
6
  //#region src/components/typography/Numeral/Numeral.tsx
7
- var c = a(function({ value: a, format: c, locale: l = "en-AU", signDisplay: u, tone: d, size: f, prefix: p, suffix: m, className: h, ...g }, _) {
8
- let v = n(a), y = t(a, l, u ? {
9
- ...c,
10
- signDisplay: u
11
- } : c), b = d === "auto" ? v === "positive" ? "positive" : v === "negative" ? "critical" : void 0 : d;
12
- return /* @__PURE__ */ s("data", {
13
- ref: _,
7
+ var l = a(function({ value: a, format: l, locale: u = "en-AU", signDisplay: d, tone: f, size: p, prefix: m, suffix: h, annotation: g, className: _, ...v }, y) {
8
+ let b = n(a), x = t(a, u, d ? {
9
+ ...l,
10
+ signDisplay: d
11
+ } : l), S = f === "auto" ? b === "positive" ? "positive" : b === "negative" ? "critical" : void 0 : f;
12
+ return /* @__PURE__ */ c("data", {
13
+ ref: y,
14
14
  value: String(a),
15
- className: e(r.numeral, h),
16
- "data-sign": v,
17
- "data-tone": b,
18
- "data-size": f,
19
- ...g,
15
+ className: e(r.numeral, _),
16
+ "data-sign": b,
17
+ "data-tone": S,
18
+ "data-size": p,
19
+ ...v,
20
20
  children: [
21
- p != null && p !== !1 ? /* @__PURE__ */ o("span", {
21
+ m != null && m !== !1 ? /* @__PURE__ */ s("span", {
22
22
  className: r.mark,
23
23
  "data-affix": "prefix",
24
- children: p
24
+ children: m
25
25
  }) : null,
26
- y.map((e, t) => e.kind === "mark" ? /* @__PURE__ */ o("span", {
26
+ x.map((e, t) => e.kind === "mark" ? /* @__PURE__ */ s("span", {
27
27
  className: r.mark,
28
28
  children: e.value
29
- }, t) : /* @__PURE__ */ o(i, { children: e.value }, t)),
30
- m != null && m !== !1 ? /* @__PURE__ */ o("span", {
29
+ }, t) : /* @__PURE__ */ s(i, { children: e.value }, t)),
30
+ h != null && h !== !1 ? /* @__PURE__ */ s("span", {
31
31
  className: r.mark,
32
32
  "data-affix": "suffix",
33
- children: m
34
- }) : null
33
+ children: h
34
+ }) : null,
35
+ g != null && g !== !1 ? /* @__PURE__ */ c(o, { children: [" ", /* @__PURE__ */ s("span", {
36
+ className: r.annotation,
37
+ children: g
38
+ })] }) : null
35
39
  ]
36
40
  });
37
41
  });
38
42
  //#endregion
39
- export { c as Numeral };
43
+ export { l as Numeral };
40
44
 
41
45
  //# sourceMappingURL=Numeral.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Numeral.js","names":["styles","Numeral_module_default","Numeral","forwardRef","rest","sign","signOf","value","parts","formatNumeralParts","locale","signDisplay","format","resolvedTone","tone","cx","className","size","prefix","part","i","Fragment","suffix"],"sources":["../../../../src/components/typography/Numeral/Numeral.tsx"],"sourcesContent":["import { Fragment, forwardRef, type DataHTMLAttributes, type ReactNode } from 'react'\nimport { cx } from '#utils/cx'\nimport { formatNumeralParts, signOf } from './format'\nimport styles from './Numeral.module.css'\n\nexport type NumeralTone =\n 'auto' | 'default' | 'muted' | 'accent' | 'positive' | 'caution' | 'critical'\nexport type NumeralSize =\n 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'display-sm' | 'display-md' | 'display-lg'\n\nexport interface NumeralProps extends Omit<\n DataHTMLAttributes<HTMLDataElement>,\n 'value' | 'children' | 'prefix'\n> {\n value: number\n /** Passed straight to `Intl.NumberFormat` (percent, units, fraction digits, compact…). */\n format?: Intl.NumberFormatOptions\n /** BCP 47 locale. Default `en-AU`. */\n locale?: string\n /** Shorthand for `format.signDisplay`. `exceptZero` shows +/− on everything but zero. */\n signDisplay?: Intl.NumberFormatOptions['signDisplay']\n /** `auto` colours by sign: positive → positive tone, negative → critical. Omit to inherit. */\n tone?: NumeralTone\n /** Step on the type scale. Omit to inherit — figures usually sit inside other text. */\n size?: NumeralSize\n /** Set before the figures, proportional (not tabular): \"≈\", \"#\", \"Rank \". Add your own spacing. */\n prefix?: ReactNode\n /** Set after the figures, proportional: \" seats\", \"×\", \" km\". Add your own spacing. */\n suffix?: ReactNode\n}\n\n/**\n * A formatted number in tabular figures, with its machine-readable value attached.\n *\n * @remarks\n * `Numeral` formats a number with `Intl.NumberFormat` and sets it in the theme's numeric face with\n * tabular, lining figures, so a column of them lines up and a changing value doesn't jitter. It\n * renders a `<data value>` element, so the raw value travels with the formatted text.\n *\n * @privateRemarks\n * A formatted number. Always tabular, lining figures in the theme's numeric face, and\n * wrapped in <data value> so the machine-readable value travels with it. Separators\n * and symbols are set proportionally: some faces (Schibsted) make a tabular comma as\n * wide as a digit, which reads as \"1 , 017\". Right-aligned columns still line up.\n *\n * <Numeral value={0.184} format={{ style: 'percent', maximumFractionDigits: 1 }} signDisplay=\"exceptZero\" tone=\"auto\" />\n */\nexport const Numeral = forwardRef<HTMLDataElement, NumeralProps>(function Numeral(\n { value, format, locale = 'en-AU', signDisplay, tone, size, prefix, suffix, className, ...rest },\n ref,\n) {\n const sign = signOf(value)\n const parts = formatNumeralParts(value, locale, signDisplay ? { ...format, signDisplay } : format)\n const resolvedTone =\n tone === 'auto'\n ? sign === 'positive'\n ? 'positive'\n : sign === 'negative'\n ? 'critical'\n : undefined\n : tone\n return (\n <data\n ref={ref}\n value={String(value)}\n className={cx(styles.numeral, className)}\n data-sign={sign}\n data-tone={resolvedTone}\n data-size={size}\n {...rest}\n >\n {prefix != null && prefix !== false ? (\n <span className={styles.mark} data-affix=\"prefix\">\n {prefix}\n </span>\n ) : null}\n {parts.map((part, i) =>\n part.kind === 'mark' ? (\n <span key={i} className={styles.mark}>\n {part.value}\n </span>\n ) : (\n <Fragment key={i}>{part.value}</Fragment>\n ),\n )}\n {suffix != null && suffix !== false ? (\n <span className={styles.mark} data-affix=\"suffix\">\n {suffix}\n </span>\n ) : null}\n </data>\n )\n})\n"],"mappings":";;;;;;AA+CA,IAAaE,IAAUC,EAA0C,SAC/D,EAAE,UAAO,WAAQ,YAAS,SAAS,gBAAa,SAAM,SAAM,WAAQ,WAAQ,cAAW,GAAGC,KAC1F,GACA;CACA,IAAMC,IAAOC,EAAOC,CAAK,GACnBC,IAAQC,EAAmBF,GAAOG,GAAQC,IAAc;EAAE,GAAGC;EAAQ;CAAY,IAAIA,CAAM,GAC3FC,IACJC,MAAS,SACLT,MAAS,aACP,aACAA,MAAS,aACP,aACA,KAAA,IACJS;CACN,OACE,kBAAC,QAAD;EACO;EACL,OAAO,OAAOP,CAAK;EACnB,WAAWQ,EAAGf,EAAO,SAASgB,CAAS;EACvC,aAAWX;EACX,aAAWQ;EACX,aAAWI;EACX,GAAIb;EAPN,UAAA;GASGc,KAAU,QAAQA,MAAW,KAC5B,kBAAC,QAAD;IAAM,WAAWlB,EAAO;IAAM,cAAW;IACtC,UAAAkB;GACG,CAAA,IACJ;GACHV,EAAM,KAAK,GAAM,MAChBW,EAAK,SAAS,SACZ,kBAAC,QAAD;IAAc,WAAWnB,EAAO;IAC7B,UAAAmB,EAAK;GACF,GAFKC,CAEL,IAEN,kBAACC,GAAD,EAAA,UAAmBF,EAAK,MAAgB,GAAzBC,CAAyB,CAE5C;GACCE,KAAU,QAAQA,MAAW,KAC5B,kBAAC,QAAD;IAAM,WAAWtB,EAAO;IAAM,cAAW;IACtC,UAAAsB;GACG,CAAA,IACJ;EACA;;AAEV,CAAC"}
1
+ {"version":3,"file":"Numeral.js","names":["styles","_Fragment","Numeral_module_default","Fragment$1","Numeral","forwardRef","rest","sign","signOf","value","parts","formatNumeralParts","locale","signDisplay","format","resolvedTone","tone","cx","className","size","prefix","part","i","Fragment","suffix","annotation"],"sources":["../../../../src/components/typography/Numeral/Numeral.tsx"],"sourcesContent":["import { Fragment, forwardRef, type DataHTMLAttributes, type ReactNode } from 'react'\nimport { cx } from '#utils/cx'\nimport { formatNumeralParts, signOf } from './format'\nimport styles from './Numeral.module.css'\n\nexport type NumeralTone =\n 'auto' | 'default' | 'muted' | 'accent' | 'positive' | 'caution' | 'critical' | 'highlight'\nexport type NumeralSize =\n 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'display-sm' | 'display-md' | 'display-lg'\n\nexport interface NumeralProps extends Omit<\n DataHTMLAttributes<HTMLDataElement>,\n 'value' | 'children' | 'prefix'\n> {\n value: number\n /** Passed straight to `Intl.NumberFormat` (percent, units, fraction digits, compact…). */\n format?: Intl.NumberFormatOptions\n /** BCP 47 locale. Default `en-AU`. */\n locale?: string\n /** Shorthand for `format.signDisplay`. `exceptZero` shows +/− on everything but zero. */\n signDisplay?: Intl.NumberFormatOptions['signDisplay']\n /**\n * `auto` colours by sign: positive → positive tone, negative → critical. `highlight` sets the\n * figure on the theme's highlight, like a marker pen, for the one figure that's \"you\" or first.\n * Omit to inherit.\n */\n tone?: NumeralTone\n /** Step on the type scale. Omit to inherit — figures usually sit inside other text. */\n size?: NumeralSize\n /** Set before the figures, proportional (not tabular): \"≈\", \"#\", \"Rank \". Add your own spacing. */\n prefix?: ReactNode\n /** Set after the figures, proportional: \" seats\", \"×\", \" km\". Add your own spacing. */\n suffix?: ReactNode\n /**\n * A small figure after the main one, part of the same reading: the shootout in \"1 (4)\", the\n * games played beside a total. Set smaller and muted, after a space.\n */\n annotation?: ReactNode\n}\n\n/**\n * A formatted number in tabular figures, with its machine-readable value attached.\n *\n * @remarks\n * `Numeral` formats a number with `Intl.NumberFormat` and sets it in the theme's numeric face with\n * tabular, lining figures, so a column of them lines up and a changing value doesn't jitter. It\n * renders a `<data value>` element, so the raw value travels with the formatted text.\n *\n * ## Testing\n *\n * Signs, decimal marks, separators and affixes are set in their own spans, and Testing Library's\n * `getByText` matches an element's own text only, so `getByText('90.5')` won't find a `Numeral`\n * showing 90.5. Match the `<data>` element's whole text, or its raw `value`:\n *\n * ```tsx\n * import { render } from '@testing-library/react'\n * import { Numeral } from '@mitcsutt/kiln-ui'\n *\n * const { container, getByText } = render(<Numeral value={90.5} signDisplay=\"always\" />)\n * getByText((_, el) => el?.tagName === 'DATA' && el.textContent === '+90.5')\n * container.querySelector('data[value=\"90.5\"]')\n * ```\n *\n * @privateRemarks\n * A formatted number. Always tabular, lining figures in the theme's numeric face, and\n * wrapped in <data value> so the machine-readable value travels with it. Separators\n * and symbols are set proportionally: some faces (Schibsted) make a tabular comma as\n * wide as a digit, which reads as \"1 , 017\". Right-aligned columns still line up.\n *\n * <Numeral value={0.184} format={{ style: 'percent', maximumFractionDigits: 1 }} signDisplay=\"exceptZero\" tone=\"auto\" />\n */\nexport const Numeral = forwardRef<HTMLDataElement, NumeralProps>(function Numeral(\n {\n value,\n format,\n locale = 'en-AU',\n signDisplay,\n tone,\n size,\n prefix,\n suffix,\n annotation,\n className,\n ...rest\n },\n ref,\n) {\n const sign = signOf(value)\n const parts = formatNumeralParts(value, locale, signDisplay ? { ...format, signDisplay } : format)\n const resolvedTone =\n tone === 'auto'\n ? sign === 'positive'\n ? 'positive'\n : sign === 'negative'\n ? 'critical'\n : undefined\n : tone\n return (\n <data\n ref={ref}\n value={String(value)}\n className={cx(styles.numeral, className)}\n data-sign={sign}\n data-tone={resolvedTone}\n data-size={size}\n {...rest}\n >\n {prefix != null && prefix !== false ? (\n <span className={styles.mark} data-affix=\"prefix\">\n {prefix}\n </span>\n ) : null}\n {parts.map((part, i) =>\n part.kind === 'mark' ? (\n <span key={i} className={styles.mark}>\n {part.value}\n </span>\n ) : (\n <Fragment key={i}>{part.value}</Fragment>\n ),\n )}\n {suffix != null && suffix !== false ? (\n <span className={styles.mark} data-affix=\"suffix\">\n {suffix}\n </span>\n ) : null}\n {annotation != null && annotation !== false ? (\n <>\n {' '}\n <span className={styles.annotation}>{annotation}</span>\n </>\n ) : null}\n </data>\n )\n})\n"],"mappings":";;;;;;AAuEA,IAAaI,IAAUC,EAA0C,SAC/D,EACE,UACA,WACA,YAAS,SACT,gBACA,SACA,SACA,WACA,WACA,eACA,cACA,GAAGC,KAEL,GACA;CACA,IAAMC,IAAOC,EAAOC,CAAK,GACnBC,IAAQC,EAAmBF,GAAOG,GAAQC,IAAc;EAAE,GAAGC;EAAQ;CAAY,IAAIA,CAAM,GAC3FC,IACJC,MAAS,SACLT,MAAS,aACP,aACAA,MAAS,aACP,aACA,KAAA,IACJS;CACN,OACE,kBAAC,QAAD;EACO;EACL,OAAO,OAAOP,CAAK;EACnB,WAAWQ,EAAGjB,EAAO,SAASkB,CAAS;EACvC,aAAWX;EACX,aAAWQ;EACX,aAAWI;EACX,GAAIb;EAPN,UAAA;GASGc,KAAU,QAAQA,MAAW,KAC5B,kBAAC,QAAD;IAAM,WAAWpB,EAAO;IAAM,cAAW;IACtC,UAAAoB;GACG,CAAA,IACJ;GACHV,EAAM,KAAK,GAAM,MAChBW,EAAK,SAAS,SACZ,kBAAC,QAAD;IAAc,WAAWrB,EAAO;IAC7B,UAAAqB,EAAK;GACF,GAFKC,CAEL,IAEN,kBAACC,GAAD,EAAA,UAAmBF,EAAK,MAAgB,GAAzBC,CAAyB,CAE5C;GACCE,KAAU,QAAQA,MAAW,KAC5B,kBAAC,QAAD;IAAM,WAAWxB,EAAO;IAAM,cAAW;IACtC,UAAAwB;GACG,CAAA,IACJ;GACHC,KAAc,QAAQA,MAAe,KACpC,kBAAAxB,GAAA,EAAA,UAAA,CACG,KACD,kBAAC,QAAD;IAAM,WAAWD,EAAO;IAAa,UAAAyB;GAAiB,CAAA,CACtD,EAAA,CAAA,IACA;EACA;;AAEV,CAAC"}
@@ -1,9 +1,10 @@
1
1
  //#region src/components/typography/Numeral/Numeral.module.css
2
- var e = "kiln-Numeral__numeral", t = "kiln-Numeral__mark", n = {
2
+ var e = "kiln-Numeral__numeral", t = "kiln-Numeral__annotation", n = "kiln-Numeral__mark", r = {
3
3
  numeral: e,
4
- mark: t
4
+ annotation: t,
5
+ mark: n
5
6
  };
6
7
  //#endregion
7
- export { n as default, t as mark, e as numeral };
8
+ export { t as annotation, r as default, n as mark, e as numeral };
8
9
 
9
10
  //# sourceMappingURL=Numeral.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Numeral.module.js","names":["numeral","mark","Numeral_module_default"],"sources":["../../../../src/components/typography/Numeral/Numeral.module.css"],"sourcesContent":["/*\n * Figures: --font-numeric, stretched per theme (Ledger's condensed receipt-tape mono),\n * tabular + lining so columns align and live values don't jiggle.\n *\n * Component tokens:\n * --numeral-display-weight default var(--display-weight)\n * --numeral-tracking default 0 (display sizes tighten slightly)\n * --numeral-weight default inherits (a condensed numeric face may want more)\n * --numeral-scale size relative to surrounding text when no `size`, default 1\n */\n.numeral {\n font-family: var(--font-numeric);\n font-stretch: var(--numeric-stretch);\n font-variant-numeric: tabular-nums lining-nums;\n font-feature-settings:\n 'tnum' 1,\n 'lnum' 1;\n font-size: calc(1em * var(--numeral-scale, 1));\n /* No fallback on purpose: unset → the inherited weight */\n font-weight: var(--numeral-weight);\n letter-spacing: var(--numeral-tracking, 0);\n white-space: nowrap;\n}\n\n.numeral[data-tone] {\n color: var(--_ink);\n}\n.numeral[data-tone='default'] {\n --_ink: var(--color-ink);\n}\n.numeral[data-tone='muted'] {\n --_ink: var(--color-ink-muted);\n}\n.numeral[data-tone='accent'] {\n --_ink: var(--color-accent-text);\n}\n.numeral[data-tone='positive'] {\n --_ink: var(--tone-positive-text);\n}\n.numeral[data-tone='caution'] {\n --_ink: var(--tone-caution-text);\n}\n.numeral[data-tone='critical'] {\n --_ink: var(--tone-critical-text);\n}\n\n.numeral[data-size] {\n font-size: var(--_fs);\n line-height: var(--leading-snug);\n}\n.numeral[data-size='xs'] {\n --_fs: var(--text-xs);\n}\n.numeral[data-size='sm'] {\n --_fs: var(--text-sm);\n}\n.numeral[data-size='md'] {\n --_fs: var(--text-md);\n}\n.numeral[data-size='lg'] {\n --_fs: var(--text-lg);\n}\n.numeral[data-size='xl'] {\n --_fs: var(--text-xl);\n}\n.numeral[data-size='2xl'] {\n --_fs: var(--text-2xl);\n}\n.numeral[data-size='3xl'] {\n --_fs: var(--text-3xl);\n}\n.numeral[data-size='display-sm'] {\n --_fs: var(--text-display-sm);\n}\n.numeral[data-size='display-md'] {\n --_fs: var(--text-display-md);\n}\n.numeral[data-size='display-lg'] {\n --_fs: var(--text-display-lg);\n}\n\n.numeral:is([data-size='2xl'], [data-size='3xl'], [data-size^='display']) {\n font-weight: var(--numeral-display-weight, var(--display-weight));\n letter-spacing: var(--numeral-tracking, -0.015em);\n line-height: max(var(--leading-tight), 1);\n}\n\n/* Separators, currency and units: proportional, so they don't open gaps between digits */\n.mark {\n font-variant-numeric: proportional-nums lining-nums;\n font-feature-settings:\n 'tnum' 0,\n 'lnum' 1;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"Numeral.module.js","names":["numeral","annotation","mark","Numeral_module_default"],"sources":["../../../../src/components/typography/Numeral/Numeral.module.css"],"sourcesContent":["/*\n * Figures: --font-numeric, stretched per theme (Ledger's condensed receipt-tape mono),\n * tabular + lining so columns align and live values don't jiggle.\n *\n * Component tokens:\n * --numeral-display-weight default var(--display-weight)\n * --numeral-tracking default 0 (display sizes tighten slightly)\n * --numeral-weight default inherits (a condensed numeric face may want more)\n * --numeral-scale size relative to surrounding text when no `size`, default 1\n */\n.numeral {\n font-family: var(--font-numeric);\n font-stretch: var(--numeric-stretch);\n font-variant-numeric: tabular-nums lining-nums;\n font-feature-settings:\n 'tnum' 1,\n 'lnum' 1;\n font-size: calc(1em * var(--numeral-scale, 1));\n /* No fallback on purpose: unset → the inherited weight */\n font-weight: var(--numeral-weight);\n letter-spacing: var(--numeral-tracking, 0);\n white-space: nowrap;\n}\n\n.numeral[data-tone] {\n color: var(--_ink);\n}\n.numeral[data-tone='default'] {\n --_ink: var(--color-ink);\n}\n.numeral[data-tone='muted'] {\n --_ink: var(--color-ink-muted);\n}\n.numeral[data-tone='accent'] {\n --_ink: var(--color-accent-text);\n}\n.numeral[data-tone='positive'] {\n --_ink: var(--tone-positive-text);\n}\n.numeral[data-tone='caution'] {\n --_ink: var(--tone-caution-text);\n}\n.numeral[data-tone='critical'] {\n --_ink: var(--tone-critical-text);\n}\n/* Highlight: the figure on the highlight fill, like a marker pen. Its ink is the fill's own. */\n.numeral[data-tone='highlight'] {\n --_ink: var(--color-highlight-ink);\n\n padding-inline: 0.2em;\n border-radius: var(--radius-chip);\n background: var(--color-highlight);\n box-decoration-break: clone;\n}\n\n/* A small figure after the main one, part of the same reading (\"1 (4)\"). */\n.annotation {\n color: var(--color-ink-muted);\n font-size: 0.72em;\n}\n.numeral[data-tone='highlight'] .annotation {\n color: inherit;\n}\n\n.numeral[data-size] {\n font-size: var(--_fs);\n line-height: var(--leading-snug);\n}\n.numeral[data-size='xs'] {\n --_fs: var(--text-xs);\n}\n.numeral[data-size='sm'] {\n --_fs: var(--text-sm);\n}\n.numeral[data-size='md'] {\n --_fs: var(--text-md);\n}\n.numeral[data-size='lg'] {\n --_fs: var(--text-lg);\n}\n.numeral[data-size='xl'] {\n --_fs: var(--text-xl);\n}\n.numeral[data-size='2xl'] {\n --_fs: var(--text-2xl);\n}\n.numeral[data-size='3xl'] {\n --_fs: var(--text-3xl);\n}\n.numeral[data-size='display-sm'] {\n --_fs: var(--text-display-sm);\n}\n.numeral[data-size='display-md'] {\n --_fs: var(--text-display-md);\n}\n.numeral[data-size='display-lg'] {\n --_fs: var(--text-display-lg);\n}\n\n.numeral:is([data-size='2xl'], [data-size='3xl'], [data-size^='display']) {\n font-weight: var(--numeral-display-weight, var(--display-weight));\n letter-spacing: var(--numeral-tracking, -0.015em);\n line-height: max(var(--leading-tight), 1);\n}\n\n/* Separators, currency and units: proportional, so they don't open gaps between digits */\n.mark {\n font-variant-numeric: proportional-nums lining-nums;\n font-feature-settings:\n 'tnum' 0,\n 'lnum' 1;\n}\n"],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  import { type HTMLAttributes } from 'react';
2
2
  import { type Responsive } from '../../../utils/responsive.js';
3
3
  export type TextSize = '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
4
- export type TextTone = 'default' | 'muted' | 'subtle' | 'accent' | 'positive' | 'caution' | 'critical' | 'inverse';
4
+ export type TextTone = 'default' | 'muted' | 'subtle' | 'accent' | 'positive' | 'caution' | 'critical' | 'inverse' | 'highlight';
5
5
  export type TextWeight = 'regular' | 'medium' | 'strong';
6
6
  export type TextAlign = 'start' | 'center' | 'end';
7
7
  /** Line-length cap from the width tokens: `narrow` 32rem · `text` 42rem · `content` 68rem. */
@@ -10,7 +10,10 @@ export type TextElement = 'p' | 'span' | 'div' | 'label' | 'strong' | 'em' | 'sm
10
10
  export interface TextProps extends HTMLAttributes<HTMLElement> {
11
11
  /** Step on the type scale. Omit to inherit the surrounding size. Responsive. */
12
12
  size?: Responsive<TextSize>;
13
- /** Colour role. Omit to inherit. Status tones use the AA-safe `-text` variants. */
13
+ /**
14
+ * Colour role. Omit to inherit. Status tones use the AA-safe `-text` variants. `highlight`
15
+ * sets the text on the theme's highlight, like a marker pen.
16
+ */
14
17
  tone?: TextTone;
15
18
  /** Omit to inherit (so `as="strong"` stays bold). */
16
19
  weight?: TextWeight;
@@ -1 +1 @@
1
- {"version":3,"file":"Text.js","names":["styles","Text_module_default","Text","forwardRef","Comp","rest","lines","truncate","responsive","size","cx","className","baseValue","tone","weight","numeric","align","measure","mergeStyles","responsiveVars","s","style"],"sources":["../../../../src/components/typography/Text/Text.tsx"],"sourcesContent":["import { forwardRef, type CSSProperties, type HTMLAttributes } from 'react'\nimport { cx } from '#utils/cx'\nimport { baseValue, mergeStyles, responsiveVars, type Responsive } from '#utils/responsive'\nimport styles from './Text.module.css'\n\nexport type TextSize = '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'\nexport type TextTone =\n 'default' | 'muted' | 'subtle' | 'accent' | 'positive' | 'caution' | 'critical' | 'inverse'\nexport type TextWeight = 'regular' | 'medium' | 'strong'\nexport type TextAlign = 'start' | 'center' | 'end'\n/** Line-length cap from the width tokens: `narrow` 32rem · `text` 42rem · `content` 68rem. */\nexport type TextMeasure = 'narrow' | 'text' | 'content'\nexport type TextElement = 'p' | 'span' | 'div' | 'label' | 'strong' | 'em' | 'small' | 'time'\n\nexport interface TextProps extends HTMLAttributes<HTMLElement> {\n /** Step on the type scale. Omit to inherit the surrounding size. Responsive. */\n size?: Responsive<TextSize>\n /** Colour role. Omit to inherit. Status tones use the AA-safe `-text` variants. */\n tone?: TextTone\n /** Omit to inherit (so `as=\"strong\"` stays bold). */\n weight?: TextWeight\n /** Tabular lining figures in the theme's numeric face — for anything that aligns or updates. */\n numeric?: boolean\n /** `true` clips to one line with an ellipsis; a number clamps to that many lines. */\n truncate?: boolean | number\n align?: TextAlign\n /** Cap the line length with a `--width-*` token (`max-inline-size`). Default: none. */\n measure?: TextMeasure\n as?: TextElement\n /** For `as=\"label\"`. */\n htmlFor?: string\n /** For `as=\"time\"`. */\n dateTime?: string\n}\n\n/**\n * Body text in the theme's text face, with a size, tone and weight from the scale.\n *\n * @remarks\n * `Text` is a paragraph by default and any inline element with `as` (`span`, `strong`, `em`,\n * `small`, `label`, `time`). Size, tone, weight and measure are props, so text never needs a\n * class.\n *\n * @privateRemarks\n * Body text. Paragraphs by default; any inline role via `as`.\n *\n * <Text size=\"sm\" tone=\"muted\">Updated 3 minutes ago</Text>\n */\nexport const Text = forwardRef<HTMLElement, TextProps>(function Text(\n {\n size,\n tone,\n weight,\n numeric = false,\n truncate,\n align,\n measure,\n as: Comp = 'p',\n className,\n style,\n ...rest\n },\n ref,\n) {\n const lines =\n truncate === true ? 1 : typeof truncate === 'number' && truncate > 0 ? truncate : undefined\n const responsive = size !== undefined && typeof size !== 'string'\n return (\n <Comp\n // @ts-expect-error — polymorphic ref across a union of intrinsic elements is safe here\n ref={ref}\n className={cx(styles.text, className)}\n data-size={baseValue(size)}\n data-responsive={responsive || undefined}\n data-tone={tone}\n data-weight={weight}\n data-numeric={numeric || undefined}\n data-truncate={lines === undefined ? undefined : lines === 1 ? 'line' : 'lines'}\n data-align={align}\n data-measure={measure}\n style={mergeStyles(\n responsive ? responsiveVars('text-size', size, (s) => `var(--text-${s})`) : undefined,\n lines !== undefined && lines > 1 ? ({ '--text-lines': lines } as CSSProperties) : undefined,\n style,\n )}\n {...rest}\n />\n )\n})\n"],"mappings":";;;;;;AAgDA,IAAaE,IAAOC,EAAmC,SACrD,EACE,SACA,SACA,WACA,aAAU,IACV,aACA,UACA,YACA,IAAIC,IAAO,KACX,cACA,UACA,GAAGC,KAEL,GACA;CACA,IAAMC,IACJC,MAAa,KAAO,IAAI,OAAOA,KAAa,YAAYA,IAAW,IAAIA,IAAW,KAAA,GAC9EC,IAAaC,MAAS,KAAA,KAAa,OAAOA,KAAS;CACzD,OACE,kBAACL,GAAD;EAEO;EACL,WAAWM,EAAGV,EAAO,MAAMW,CAAS;EACpC,aAAWC,EAAUH,CAAI;EACzB,mBAAiBD,KAAc,KAAA;EAC/B,aAAWK;EACX,eAAaC;EACb,gBAAcC,KAAW,KAAA;EACzB,iBAAeT,MAAU,KAAA,IAAY,KAAA,IAAYA,MAAU,IAAI,SAAS;EACxE,cAAYU;EACZ,gBAAcC;EACd,OAAOC,EACLV,IAAaW,EAAe,aAAaV,IAAO,MAAM,cAAcW,EAAE,EAAE,IAAI,KAAA,GAC5Ed,MAAU,KAAA,KAAaA,IAAQ,IAAK,EAAE,gBAAgBA,EAAM,IAAsB,KAAA,GAClFe,CACF;EACA,GAAIhB;CACL,CAAA;AAEL,CAAC"}
1
+ {"version":3,"file":"Text.js","names":["styles","Text_module_default","Text","forwardRef","Comp","rest","lines","truncate","responsive","size","cx","className","baseValue","tone","weight","numeric","align","measure","mergeStyles","responsiveVars","s","style"],"sources":["../../../../src/components/typography/Text/Text.tsx"],"sourcesContent":["import { forwardRef, type CSSProperties, type HTMLAttributes } from 'react'\nimport { cx } from '#utils/cx'\nimport { baseValue, mergeStyles, responsiveVars, type Responsive } from '#utils/responsive'\nimport styles from './Text.module.css'\n\nexport type TextSize = '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'\nexport type TextTone =\n | 'default'\n | 'muted'\n | 'subtle'\n | 'accent'\n | 'positive'\n | 'caution'\n | 'critical'\n | 'inverse'\n | 'highlight'\nexport type TextWeight = 'regular' | 'medium' | 'strong'\nexport type TextAlign = 'start' | 'center' | 'end'\n/** Line-length cap from the width tokens: `narrow` 32rem · `text` 42rem · `content` 68rem. */\nexport type TextMeasure = 'narrow' | 'text' | 'content'\nexport type TextElement = 'p' | 'span' | 'div' | 'label' | 'strong' | 'em' | 'small' | 'time'\n\nexport interface TextProps extends HTMLAttributes<HTMLElement> {\n /** Step on the type scale. Omit to inherit the surrounding size. Responsive. */\n size?: Responsive<TextSize>\n /**\n * Colour role. Omit to inherit. Status tones use the AA-safe `-text` variants. `highlight`\n * sets the text on the theme's highlight, like a marker pen.\n */\n tone?: TextTone\n /** Omit to inherit (so `as=\"strong\"` stays bold). */\n weight?: TextWeight\n /** Tabular lining figures in the theme's numeric face — for anything that aligns or updates. */\n numeric?: boolean\n /** `true` clips to one line with an ellipsis; a number clamps to that many lines. */\n truncate?: boolean | number\n align?: TextAlign\n /** Cap the line length with a `--width-*` token (`max-inline-size`). Default: none. */\n measure?: TextMeasure\n as?: TextElement\n /** For `as=\"label\"`. */\n htmlFor?: string\n /** For `as=\"time\"`. */\n dateTime?: string\n}\n\n/**\n * Body text in the theme's text face, with a size, tone and weight from the scale.\n *\n * @remarks\n * `Text` is a paragraph by default and any inline element with `as` (`span`, `strong`, `em`,\n * `small`, `label`, `time`). Size, tone, weight and measure are props, so text never needs a\n * class.\n *\n * @privateRemarks\n * Body text. Paragraphs by default; any inline role via `as`.\n *\n * <Text size=\"sm\" tone=\"muted\">Updated 3 minutes ago</Text>\n */\nexport const Text = forwardRef<HTMLElement, TextProps>(function Text(\n {\n size,\n tone,\n weight,\n numeric = false,\n truncate,\n align,\n measure,\n as: Comp = 'p',\n className,\n style,\n ...rest\n },\n ref,\n) {\n const lines =\n truncate === true ? 1 : typeof truncate === 'number' && truncate > 0 ? truncate : undefined\n const responsive = size !== undefined && typeof size !== 'string'\n return (\n <Comp\n // @ts-expect-error — polymorphic ref across a union of intrinsic elements is safe here\n ref={ref}\n className={cx(styles.text, className)}\n data-size={baseValue(size)}\n data-responsive={responsive || undefined}\n data-tone={tone}\n data-weight={weight}\n data-numeric={numeric || undefined}\n data-truncate={lines === undefined ? undefined : lines === 1 ? 'line' : 'lines'}\n data-align={align}\n data-measure={measure}\n style={mergeStyles(\n responsive ? responsiveVars('text-size', size, (s) => `var(--text-${s})`) : undefined,\n lines !== undefined && lines > 1 ? ({ '--text-lines': lines } as CSSProperties) : undefined,\n style,\n )}\n {...rest}\n />\n )\n})\n"],"mappings":";;;;;;AA2DA,IAAaE,IAAOC,EAAmC,SACrD,EACE,SACA,SACA,WACA,aAAU,IACV,aACA,UACA,YACA,IAAIC,IAAO,KACX,cACA,UACA,GAAGC,KAEL,GACA;CACA,IAAMC,IACJC,MAAa,KAAO,IAAI,OAAOA,KAAa,YAAYA,IAAW,IAAIA,IAAW,KAAA,GAC9EC,IAAaC,MAAS,KAAA,KAAa,OAAOA,KAAS;CACzD,OACE,kBAACL,GAAD;EAEO;EACL,WAAWM,EAAGV,EAAO,MAAMW,CAAS;EACpC,aAAWC,EAAUH,CAAI;EACzB,mBAAiBD,KAAc,KAAA;EAC/B,aAAWK;EACX,eAAaC;EACb,gBAAcC,KAAW,KAAA;EACzB,iBAAeT,MAAU,KAAA,IAAY,KAAA,IAAYA,MAAU,IAAI,SAAS;EACxE,cAAYU;EACZ,gBAAcC;EACd,OAAOC,EACLV,IAAaW,EAAe,aAAaV,IAAO,MAAM,cAAcW,EAAE,EAAE,IAAI,KAAA,GAC5Ed,MAAU,KAAA,KAAaA,IAAQ,IAAK,EAAE,gBAAgBA,EAAM,IAAsB,KAAA,GAClFe,CACF;EACA,GAAIhB;CACL,CAAA;AAEL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Text.module.js","names":["text","Text_module_default"],"sources":["../../../../src/components/typography/Text/Text.module.css"],"sourcesContent":["/*\n * Body text. Everything is opt-in: with no props a <Text> inherits size, colour and\n * weight, so it composes inside buttons, table cells and list rows.\n * Responsive size reads --text-size-{base..xl} (Stack pattern) when data-responsive.\n *\n * Component tokens:\n * --text-weight-medium default 500\n * --text-weight-strong default 650\n */\n.text {\n --_lh: var(--leading-body);\n margin: 0;\n}\n.text[data-tone] {\n color: var(--_ink);\n}\n\n/* Scalar sizes */\n.text[data-size] {\n font-size: var(--_fs);\n line-height: var(--_lh);\n}\n.text[data-size='2xs'] {\n --_fs: var(--text-2xs);\n}\n.text[data-size='xs'] {\n --_fs: var(--text-xs);\n}\n.text[data-size='sm'] {\n --_fs: var(--text-sm);\n}\n.text[data-size='md'] {\n --_fs: var(--text-md);\n}\n.text[data-size='lg'] {\n --_fs: var(--text-lg);\n --_lh: calc((var(--leading-body) + var(--leading-snug)) / 2);\n}\n.text[data-size='xl'] {\n --_fs: var(--text-xl);\n --_lh: var(--leading-snug);\n}\n\n/* Responsive sizes */\n.text[data-responsive] {\n --_fs: var(--text-size-base);\n}\n@media (min-width: 40em) {\n .text[data-responsive] {\n --_fs: var(--text-size-sm);\n }\n}\n@media (min-width: 48em) {\n .text[data-responsive] {\n --_fs: var(--text-size-md);\n }\n}\n@media (min-width: 64em) {\n .text[data-responsive] {\n --_fs: var(--text-size-lg);\n }\n}\n@media (min-width: 80em) {\n .text[data-responsive] {\n --_fs: var(--text-size-xl);\n }\n}\n\n/* Tones */\n.text[data-tone='default'] {\n --_ink: var(--color-ink);\n}\n.text[data-tone='muted'] {\n --_ink: var(--color-ink-muted);\n}\n.text[data-tone='subtle'] {\n --_ink: var(--color-ink-subtle);\n}\n.text[data-tone='accent'] {\n --_ink: var(--color-accent-text);\n}\n.text[data-tone='positive'] {\n --_ink: var(--tone-positive-text);\n}\n.text[data-tone='caution'] {\n --_ink: var(--tone-caution-text);\n}\n.text[data-tone='critical'] {\n --_ink: var(--tone-critical-text);\n}\n.text[data-tone='inverse'] {\n --_ink: var(--color-ink-inverse);\n}\n\n/* Weights */\n.text[data-weight='regular'] {\n font-weight: 400;\n}\n.text[data-weight='medium'] {\n font-weight: var(--text-weight-medium, 500);\n}\n.text[data-weight='strong'] {\n font-weight: var(--text-weight-strong, 650);\n}\n\n/* Numbers: the theme's figure face, always tabular + lining */\n.text[data-numeric] {\n font-family: var(--font-numeric);\n font-stretch: var(--numeric-stretch);\n font-variant-numeric: tabular-nums lining-nums;\n font-feature-settings:\n 'tnum' 1,\n 'lnum' 1;\n}\n\n/* Alignment */\n.text[data-align='start'] {\n text-align: start;\n}\n.text[data-align='center'] {\n text-align: center;\n}\n.text[data-align='end'] {\n text-align: end;\n}\n\n/* Truncation */\n.text[data-truncate='line'] {\n display: block;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n min-inline-size: 0;\n}\n.text[data-truncate='lines'] {\n display: -webkit-box;\n overflow: hidden;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: var(--text-lines);\n line-clamp: var(--text-lines);\n}\n\n/* Measure: cap the line length with the width tokens. */\n.text[data-measure='narrow'] {\n max-inline-size: var(--width-narrow);\n}\n.text[data-measure='text'] {\n max-inline-size: var(--width-text);\n}\n.text[data-measure='content'] {\n max-inline-size: var(--width-content);\n}\n"],"mappings":""}
1
+ {"version":3,"file":"Text.module.js","names":["text","Text_module_default"],"sources":["../../../../src/components/typography/Text/Text.module.css"],"sourcesContent":["/*\n * Body text. Everything is opt-in: with no props a <Text> inherits size, colour and\n * weight, so it composes inside buttons, table cells and list rows.\n * Responsive size reads --text-size-{base..xl} (Stack pattern) when data-responsive.\n *\n * Component tokens:\n * --text-weight-medium default 500\n * --text-weight-strong default 650\n */\n.text {\n --_lh: var(--leading-body);\n margin: 0;\n}\n.text[data-tone] {\n color: var(--_ink);\n}\n\n/* Scalar sizes */\n.text[data-size] {\n font-size: var(--_fs);\n line-height: var(--_lh);\n}\n.text[data-size='2xs'] {\n --_fs: var(--text-2xs);\n}\n.text[data-size='xs'] {\n --_fs: var(--text-xs);\n}\n.text[data-size='sm'] {\n --_fs: var(--text-sm);\n}\n.text[data-size='md'] {\n --_fs: var(--text-md);\n}\n.text[data-size='lg'] {\n --_fs: var(--text-lg);\n --_lh: calc((var(--leading-body) + var(--leading-snug)) / 2);\n}\n.text[data-size='xl'] {\n --_fs: var(--text-xl);\n --_lh: var(--leading-snug);\n}\n\n/* Responsive sizes */\n.text[data-responsive] {\n --_fs: var(--text-size-base);\n}\n@media (min-width: 40em) {\n .text[data-responsive] {\n --_fs: var(--text-size-sm);\n }\n}\n@media (min-width: 48em) {\n .text[data-responsive] {\n --_fs: var(--text-size-md);\n }\n}\n@media (min-width: 64em) {\n .text[data-responsive] {\n --_fs: var(--text-size-lg);\n }\n}\n@media (min-width: 80em) {\n .text[data-responsive] {\n --_fs: var(--text-size-xl);\n }\n}\n\n/* Tones */\n.text[data-tone='default'] {\n --_ink: var(--color-ink);\n}\n.text[data-tone='muted'] {\n --_ink: var(--color-ink-muted);\n}\n.text[data-tone='subtle'] {\n --_ink: var(--color-ink-subtle);\n}\n.text[data-tone='accent'] {\n --_ink: var(--color-accent-text);\n}\n.text[data-tone='positive'] {\n --_ink: var(--tone-positive-text);\n}\n.text[data-tone='caution'] {\n --_ink: var(--tone-caution-text);\n}\n.text[data-tone='critical'] {\n --_ink: var(--tone-critical-text);\n}\n.text[data-tone='inverse'] {\n --_ink: var(--color-ink-inverse);\n}\n/* Highlight: on the highlight fill, like a marker pen. Its ink is the fill's own. */\n.text[data-tone='highlight'] {\n --_ink: var(--color-highlight-ink);\n\n padding-inline: 0.2em;\n border-radius: var(--radius-chip);\n background: var(--color-highlight);\n box-decoration-break: clone;\n}\n\n/* Weights */\n.text[data-weight='regular'] {\n font-weight: 400;\n}\n.text[data-weight='medium'] {\n font-weight: var(--text-weight-medium, 500);\n}\n.text[data-weight='strong'] {\n font-weight: var(--text-weight-strong, 650);\n}\n\n/* Numbers: the theme's figure face, always tabular + lining */\n.text[data-numeric] {\n font-family: var(--font-numeric);\n font-stretch: var(--numeric-stretch);\n font-variant-numeric: tabular-nums lining-nums;\n font-feature-settings:\n 'tnum' 1,\n 'lnum' 1;\n}\n\n/* Alignment */\n.text[data-align='start'] {\n text-align: start;\n}\n.text[data-align='center'] {\n text-align: center;\n}\n.text[data-align='end'] {\n text-align: end;\n}\n\n/* Truncation */\n.text[data-truncate='line'] {\n display: block;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n min-inline-size: 0;\n}\n.text[data-truncate='lines'] {\n display: -webkit-box;\n overflow: hidden;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: var(--text-lines);\n line-clamp: var(--text-lines);\n}\n\n/* Measure: cap the line length with the width tokens. */\n.text[data-measure='narrow'] {\n max-inline-size: var(--width-narrow);\n}\n.text[data-measure='text'] {\n max-inline-size: var(--width-text);\n}\n.text[data-measure='content'] {\n max-inline-size: var(--width-content);\n}\n"],"mappings":""}
@@ -3,6 +3,7 @@ import t from "./Icon.module.js";
3
3
  import { forwardRef as n } from "react";
4
4
  import { jsx as r } from "react/jsx-runtime";
5
5
  //#region src/icons/Icon.tsx
6
+ /* @__NO_SIDE_EFFECTS__ */
6
7
  function i(i, a) {
7
8
  let o = n(function({ size: n = "inherit", label: i, className: o, ...s }, c) {
8
9
  return /* @__PURE__ */ r("svg", {
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.js","names":["styles","Icon_module_default","createIcon","Component","forwardRef","rest","cx","className","size","label","paths","displayName"],"sources":["../../src/icons/Icon.tsx"],"sourcesContent":["import { forwardRef, type SVGProps } from 'react'\nimport { cx } from '#utils/cx'\nimport styles from './Icon.module.css'\n\nexport type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'inherit'\n\nexport interface IconProps extends Omit<SVGProps<SVGSVGElement>, 'ref'> {\n /** `inherit` (default) sizes to the surrounding font-size (1em). */\n size?: IconSize\n /** Accessible name. Omit for decorative icons (the default) — they're aria-hidden. */\n label?: string\n}\n\n/**\n * Base for the library's own glyphs. 20×20 grid, stroke weight is a theme token\n * (`--icon-stroke`), so Fiesta icons are chunky and Flightdeck icons are fine-lined.\n * Consumers may pass any SVG/icon node where a component accepts `icon` props.\n */\nexport function createIcon(displayName: string, paths: React.ReactNode) {\n const Component = forwardRef<SVGSVGElement, IconProps>(function Icon(\n { size = 'inherit', label, className, ...rest },\n ref,\n ) {\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cx(styles.icon, className)}\n data-size={size}\n aria-hidden={label ? undefined : true}\n aria-label={label}\n role={label ? 'img' : undefined}\n focusable=\"false\"\n {...rest}\n >\n {paths}\n </svg>\n )\n })\n Component.displayName = displayName\n return Component\n}\n"],"mappings":";;;;;AAkBA,SAAgBE,EAAW,GAAqB,GAAwB;CACtE,IAAMC,IAAYC,EAAqC,SACrD,EAAE,UAAO,WAAW,UAAO,cAAW,GAAGC,KACzC,GACA;EACA,OACE,kBAAC,OAAD;GACO;GACL,SAAQ;GACR,MAAK;GACL,QAAO;GACP,eAAc;GACd,gBAAe;GACf,WAAWC,EAAGN,EAAO,MAAMO,CAAS;GACpC,aAAWC;GACX,eAAa,MAAQ,KAAA;GACrB,cAAYC;GACZ,MAAMA,IAAQ,QAAQ,KAAA;GACtB,WAAU;GACV,GAAIJ;GAEH,UAAAK;EACE,CAAA;CAET,CAAC;CAED,OADA,EAAU,cAAcC,GACjBR;AACT"}
1
+ {"version":3,"file":"Icon.js","names":["styles","Icon_module_default","createIcon","Component","forwardRef","rest","cx","className","size","label","paths","displayName"],"sources":["../../src/icons/Icon.tsx"],"sourcesContent":["import { forwardRef, type SVGProps } from 'react'\nimport { cx } from '#utils/cx'\nimport styles from './Icon.module.css'\n\nexport type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'inherit'\n\nexport interface IconProps extends Omit<SVGProps<SVGSVGElement>, 'ref'> {\n /** `inherit` (default) sizes to the surrounding font-size (1em). */\n size?: IconSize\n /** Accessible name. Omit for decorative icons (the default) — they're aria-hidden. */\n label?: string\n}\n\n/**\n * Base for the library's own glyphs. 20×20 grid, stroke weight is a theme token\n * (`--icon-stroke`), so Fiesta icons are chunky and Flightdeck icons are fine-lined.\n * Consumers may pass any SVG/icon node where a component accepts `icon` props.\n */\n// Marked side-effect free so a bundler drops every icon an app doesn't import.\n/* @__NO_SIDE_EFFECTS__ */\nexport function createIcon(displayName: string, paths: React.ReactNode) {\n const Component = forwardRef<SVGSVGElement, IconProps>(function Icon(\n { size = 'inherit', label, className, ...rest },\n ref,\n ) {\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cx(styles.icon, className)}\n data-size={size}\n aria-hidden={label ? undefined : true}\n aria-label={label}\n role={label ? 'img' : undefined}\n focusable=\"false\"\n {...rest}\n >\n {paths}\n </svg>\n )\n })\n Component.displayName = displayName\n return Component\n}\n"],"mappings":";;;;;;AAoBA,SAAgBE,EAAW,GAAqB,GAAwB;CACtE,IAAMC,IAAYC,EAAqC,SACrD,EAAE,UAAO,WAAW,UAAO,cAAW,GAAGC,KACzC,GACA;EACA,OACE,kBAAC,OAAD;GACO;GACL,SAAQ;GACR,MAAK;GACL,QAAO;GACP,eAAc;GACd,gBAAe;GACf,WAAWC,EAAGN,EAAO,MAAMO,CAAS;GACpC,aAAWC;GACX,eAAa,MAAQ,KAAA;GACrB,cAAYC;GACZ,MAAMA,IAAQ,QAAQ,KAAA;GACtB,WAAU;GACV,GAAIJ;GAEH,UAAAK;EACE,CAAA;CAET,CAAC;CAED,OADA,EAAU,cAAcC,GACjBR;AACT"}
@@ -24,3 +24,15 @@ export declare const StarIcon: import("react").ForwardRefExoticComponent<import(
24
24
  export declare const EyeIcon: import("react").ForwardRefExoticComponent<import("./Icon.js").IconProps & import("react").RefAttributes<SVGSVGElement>>;
25
25
  export declare const EyeOffIcon: import("react").ForwardRefExoticComponent<import("./Icon.js").IconProps & import("react").RefAttributes<SVGSVGElement>>;
26
26
  export declare const UploadIcon: import("react").ForwardRefExoticComponent<import("./Icon.js").IconProps & import("react").RefAttributes<SVGSVGElement>>;
27
+ export declare const TrophyIcon: import("react").ForwardRefExoticComponent<import("./Icon.js").IconProps & import("react").RefAttributes<SVGSVGElement>>;
28
+ export declare const CalendarIcon: import("react").ForwardRefExoticComponent<import("./Icon.js").IconProps & import("react").RefAttributes<SVGSVGElement>>;
29
+ export declare const UsersIcon: import("react").ForwardRefExoticComponent<import("./Icon.js").IconProps & import("react").RefAttributes<SVGSVGElement>>;
30
+ export declare const SwordsIcon: import("react").ForwardRefExoticComponent<import("./Icon.js").IconProps & import("react").RefAttributes<SVGSVGElement>>;
31
+ export declare const HelpIcon: import("react").ForwardRefExoticComponent<import("./Icon.js").IconProps & import("react").RefAttributes<SVGSVGElement>>;
32
+ export declare const ClockIcon: import("react").ForwardRefExoticComponent<import("./Icon.js").IconProps & import("react").RefAttributes<SVGSVGElement>>;
33
+ export declare const ZapIcon: import("react").ForwardRefExoticComponent<import("./Icon.js").IconProps & import("react").RefAttributes<SVGSVGElement>>;
34
+ export declare const MessageIcon: import("react").ForwardRefExoticComponent<import("./Icon.js").IconProps & import("react").RefAttributes<SVGSVGElement>>;
35
+ export declare const RadioIcon: import("react").ForwardRefExoticComponent<import("./Icon.js").IconProps & import("react").RefAttributes<SVGSVGElement>>;
36
+ export declare const ShieldIcon: import("react").ForwardRefExoticComponent<import("./Icon.js").IconProps & import("react").RefAttributes<SVGSVGElement>>;
37
+ export declare const TargetIcon: import("react").ForwardRefExoticComponent<import("./Icon.js").IconProps & import("react").RefAttributes<SVGSVGElement>>;
38
+ export declare const TrendingUpIcon: import("react").ForwardRefExoticComponent<import("./Icon.js").IconProps & import("react").RefAttributes<SVGSVGElement>>;
@@ -1,11 +1,11 @@
1
1
  import { createIcon as e } from "./Icon.js";
2
2
  import { Fragment as t, jsx as n, jsxs as r } from "react/jsx-runtime";
3
3
  //#region src/icons/icons.tsx
4
- var i = e("ChevronDownIcon", /* @__PURE__ */ n("path", { d: "M5.5 8 10 12.5 14.5 8" })), a = e("ChevronUpIcon", /* @__PURE__ */ n("path", { d: "M5.5 12 10 7.5 14.5 12" })), o = e("ChevronLeftIcon", /* @__PURE__ */ n("path", { d: "M12 5.5 7.5 10 12 14.5" })), s = e("ChevronRightIcon", /* @__PURE__ */ n("path", { d: "M8 5.5 12.5 10 8 14.5" })), c = e("CheckIcon", /* @__PURE__ */ n("path", { d: "M4.5 10.5 8.25 14 15.5 6.5" })), l = e("CloseIcon", /* @__PURE__ */ n("path", { d: "M5.5 5.5l9 9m0-9-9 9" })), u = e("PlusIcon", /* @__PURE__ */ n("path", { d: "M10 4.5v11M4.5 10h11" })), d = e("MinusIcon", /* @__PURE__ */ n("path", { d: "M4.5 10h11" })), f = e("ArrowLeftIcon", /* @__PURE__ */ n("path", { d: "M15.5 10h-11m4.5-4.5L4.5 10 9 14.5" })), p = e("ArrowRightIcon", /* @__PURE__ */ n("path", { d: "M4.5 10h11M11 5.5l4.5 4.5-4.5 4.5" })), m = e("ArrowUpRightIcon", /* @__PURE__ */ n("path", { d: "M6.5 13.5l7-7M7.5 6.5h6v6" })), h = e("SearchIcon", /* @__PURE__ */ r(t, { children: [/* @__PURE__ */ n("circle", {
4
+ var i = /* @__PURE__ */ e("ChevronDownIcon", /* @__PURE__ */ n("path", { d: "M5.5 8 10 12.5 14.5 8" })), a = /* @__PURE__ */ e("ChevronUpIcon", /* @__PURE__ */ n("path", { d: "M5.5 12 10 7.5 14.5 12" })), o = /* @__PURE__ */ e("ChevronLeftIcon", /* @__PURE__ */ n("path", { d: "M12 5.5 7.5 10 12 14.5" })), s = /* @__PURE__ */ e("ChevronRightIcon", /* @__PURE__ */ n("path", { d: "M8 5.5 12.5 10 8 14.5" })), c = /* @__PURE__ */ e("CheckIcon", /* @__PURE__ */ n("path", { d: "M4.5 10.5 8.25 14 15.5 6.5" })), l = /* @__PURE__ */ e("CloseIcon", /* @__PURE__ */ n("path", { d: "M5.5 5.5l9 9m0-9-9 9" })), u = /* @__PURE__ */ e("PlusIcon", /* @__PURE__ */ n("path", { d: "M10 4.5v11M4.5 10h11" })), d = /* @__PURE__ */ e("MinusIcon", /* @__PURE__ */ n("path", { d: "M4.5 10h11" })), f = /* @__PURE__ */ e("ArrowLeftIcon", /* @__PURE__ */ n("path", { d: "M15.5 10h-11m4.5-4.5L4.5 10 9 14.5" })), p = /* @__PURE__ */ e("ArrowRightIcon", /* @__PURE__ */ n("path", { d: "M4.5 10h11M11 5.5l4.5 4.5-4.5 4.5" })), m = /* @__PURE__ */ e("ArrowUpRightIcon", /* @__PURE__ */ n("path", { d: "M6.5 13.5l7-7M7.5 6.5h6v6" })), h = /* @__PURE__ */ e("SearchIcon", /* @__PURE__ */ r(t, { children: [/* @__PURE__ */ n("circle", {
5
5
  cx: "9",
6
6
  cy: "9",
7
7
  r: "4.75"
8
- }), /* @__PURE__ */ n("path", { d: "m12.5 12.5 3.5 3.5" })] })), g = e("InfoIcon", /* @__PURE__ */ r(t, { children: [
8
+ }), /* @__PURE__ */ n("path", { d: "m12.5 12.5 3.5 3.5" })] })), g = /* @__PURE__ */ e("InfoIcon", /* @__PURE__ */ r(t, { children: [
9
9
  /* @__PURE__ */ n("circle", {
10
10
  cx: "10",
11
11
  cy: "10",
@@ -13,11 +13,11 @@ var i = e("ChevronDownIcon", /* @__PURE__ */ n("path", { d: "M5.5 8 10 12.5 14.5
13
13
  }),
14
14
  /* @__PURE__ */ n("path", { d: "M10 9.25v4.25" }),
15
15
  /* @__PURE__ */ n("path", { d: "M10 6.6v.01" })
16
- ] })), _ = e("WarningIcon", /* @__PURE__ */ r(t, { children: [
16
+ ] })), _ = /* @__PURE__ */ e("WarningIcon", /* @__PURE__ */ r(t, { children: [
17
17
  /* @__PURE__ */ n("path", { d: "M10 3.5 17 16H3z" }),
18
18
  /* @__PURE__ */ n("path", { d: "M10 8.5v3.5" }),
19
19
  /* @__PURE__ */ n("path", { d: "M10 14.1v.01" })
20
- ] })), v = e("ErrorIcon", /* @__PURE__ */ r(t, { children: [
20
+ ] })), v = /* @__PURE__ */ e("ErrorIcon", /* @__PURE__ */ r(t, { children: [
21
21
  /* @__PURE__ */ n("circle", {
22
22
  cx: "10",
23
23
  cy: "10",
@@ -25,39 +25,89 @@ var i = e("ChevronDownIcon", /* @__PURE__ */ n("path", { d: "M5.5 8 10 12.5 14.5
25
25
  }),
26
26
  /* @__PURE__ */ n("path", { d: "M10 6.5v4.5" }),
27
27
  /* @__PURE__ */ n("path", { d: "M10 13.6v.01" })
28
- ] })), y = e("CircleCheckIcon", /* @__PURE__ */ r(t, { children: [/* @__PURE__ */ n("circle", {
28
+ ] })), y = /* @__PURE__ */ e("CircleCheckIcon", /* @__PURE__ */ r(t, { children: [/* @__PURE__ */ n("circle", {
29
29
  cx: "10",
30
30
  cy: "10",
31
31
  r: "7"
32
- }), /* @__PURE__ */ n("path", { d: "m7 10.25 2.1 2 3.9-4.25" })] })), b = e("MenuIcon", /* @__PURE__ */ n("path", { d: "M3.5 6.5h13M3.5 10h13M3.5 13.5h13" })), x = e("MoreIcon", /* @__PURE__ */ n("path", {
32
+ }), /* @__PURE__ */ n("path", { d: "m7 10.25 2.1 2 3.9-4.25" })] })), b = /* @__PURE__ */ e("MenuIcon", /* @__PURE__ */ n("path", { d: "M3.5 6.5h13M3.5 10h13M3.5 13.5h13" })), x = /* @__PURE__ */ e("MoreIcon", /* @__PURE__ */ n("path", {
33
33
  d: "M5 10v.01M10 10v.01M15 10v.01",
34
34
  strokeWidth: "2.25"
35
- })), S = e("CopyIcon", /* @__PURE__ */ r(t, { children: [/* @__PURE__ */ n("rect", {
35
+ })), S = /* @__PURE__ */ e("CopyIcon", /* @__PURE__ */ r(t, { children: [/* @__PURE__ */ n("rect", {
36
36
  x: "7",
37
37
  y: "7",
38
38
  width: "9",
39
39
  height: "9",
40
40
  rx: "1.5"
41
- }), /* @__PURE__ */ n("path", { d: "M13 4.5H5.5a1 1 0 0 0-1 1V13" })] })), C = e("SunIcon", /* @__PURE__ */ r(t, { children: [/* @__PURE__ */ n("circle", {
41
+ }), /* @__PURE__ */ n("path", { d: "M13 4.5H5.5a1 1 0 0 0-1 1V13" })] })), C = /* @__PURE__ */ e("SunIcon", /* @__PURE__ */ r(t, { children: [/* @__PURE__ */ n("circle", {
42
42
  cx: "10",
43
43
  cy: "10",
44
44
  r: "3.25"
45
- }), /* @__PURE__ */ n("path", { d: "M10 2.75v1.5M10 15.75v1.5M2.75 10h1.5M15.75 10h1.5M4.9 4.9l1.05 1.05M14.05 14.05l1.05 1.05M4.9 15.1l1.05-1.05M14.05 5.95l1.05-1.05" })] })), w = e("MoonIcon", /* @__PURE__ */ n("path", { d: "M15.5 12.4A6.25 6.25 0 0 1 7.6 4.5a6.25 6.25 0 1 0 7.9 7.9Z" })), T = e("SystemIcon", /* @__PURE__ */ r(t, { children: [/* @__PURE__ */ n("rect", {
45
+ }), /* @__PURE__ */ n("path", { d: "M10 2.75v1.5M10 15.75v1.5M2.75 10h1.5M15.75 10h1.5M4.9 4.9l1.05 1.05M14.05 14.05l1.05 1.05M4.9 15.1l1.05-1.05M14.05 5.95l1.05-1.05" })] })), w = /* @__PURE__ */ e("MoonIcon", /* @__PURE__ */ n("path", { d: "M15.5 12.4A6.25 6.25 0 0 1 7.6 4.5a6.25 6.25 0 1 0 7.9 7.9Z" })), T = /* @__PURE__ */ e("SystemIcon", /* @__PURE__ */ r(t, { children: [/* @__PURE__ */ n("rect", {
46
46
  x: "3",
47
47
  y: "4",
48
48
  width: "14",
49
49
  height: "9.5",
50
50
  rx: "1.25"
51
- }), /* @__PURE__ */ n("path", { d: "M7.5 16.5h5M10 13.5v3" })] })), E = e("StarIcon", /* @__PURE__ */ n("path", { d: "M10 3.25 12.3 8l5.2.75-3.75 3.66.9 5.2L10 15.1l-4.65 2.5.9-5.2-3.75-3.66L7.7 8Z" })), D = e("EyeIcon", /* @__PURE__ */ r(t, { children: [/* @__PURE__ */ n("path", { d: "M2.5 10S5.5 4.75 10 4.75 17.5 10 17.5 10 14.5 15.25 10 15.25 2.5 10 2.5 10Z" }), /* @__PURE__ */ n("circle", {
51
+ }), /* @__PURE__ */ n("path", { d: "M7.5 16.5h5M10 13.5v3" })] })), E = /* @__PURE__ */ e("StarIcon", /* @__PURE__ */ n("path", { d: "M10 3.25 12.3 8l5.2.75-3.75 3.66.9 5.2L10 15.1l-4.65 2.5.9-5.2-3.75-3.66L7.7 8Z" })), D = /* @__PURE__ */ e("EyeIcon", /* @__PURE__ */ r(t, { children: [/* @__PURE__ */ n("path", { d: "M2.5 10S5.5 4.75 10 4.75 17.5 10 17.5 10 14.5 15.25 10 15.25 2.5 10 2.5 10Z" }), /* @__PURE__ */ n("circle", {
52
52
  cx: "10",
53
53
  cy: "10",
54
54
  r: "2.25"
55
- })] })), O = e("EyeOffIcon", /* @__PURE__ */ r(t, { children: [
55
+ })] })), O = /* @__PURE__ */ e("EyeOffIcon", /* @__PURE__ */ r(t, { children: [
56
56
  /* @__PURE__ */ n("path", { d: "M4.4 4.4 15.6 15.6" }),
57
57
  /* @__PURE__ */ n("path", { d: "M8.2 5.05C8.77 4.86 9.37 4.75 10 4.75c4.5 0 7.5 5.25 7.5 5.25s-.85 1.5-2.35 2.85M6.3 6.3C4.15 7.6 2.5 10 2.5 10s3 5.25 7.5 5.25c1.1 0 2.08-.32 2.93-.8" }),
58
58
  /* @__PURE__ */ n("path", { d: "M7.9 8.15A2.25 2.25 0 0 0 10 12.25c.42 0 .8-.1 1.15-.28" })
59
- ] })), k = e("UploadIcon", /* @__PURE__ */ r(t, { children: [/* @__PURE__ */ n("path", { d: "M10 13.25v-8.5M6.75 8 10 4.75 13.25 8" }), /* @__PURE__ */ n("path", { d: "M3.75 14.25v1a1.5 1.5 0 0 0 1.5 1.5h9.5a1.5 1.5 0 0 0 1.5-1.5v-1" })] }));
59
+ ] })), k = /* @__PURE__ */ e("UploadIcon", /* @__PURE__ */ r(t, { children: [/* @__PURE__ */ n("path", { d: "M10 13.25v-8.5M6.75 8 10 4.75 13.25 8" }), /* @__PURE__ */ n("path", { d: "M3.75 14.25v1a1.5 1.5 0 0 0 1.5 1.5h9.5a1.5 1.5 0 0 0 1.5-1.5v-1" })] })), A = /* @__PURE__ */ e("TrophyIcon", /* @__PURE__ */ r(t, { children: [
60
+ /* @__PURE__ */ n("path", { d: "M6.5 3.75h7v4a3.5 3.5 0 0 1-7 0Z" }),
61
+ /* @__PURE__ */ n("path", { d: "M6.5 5.25H4.25v.75a2.75 2.75 0 0 0 2.6 2.75M13.5 5.25h2.25v.75a2.75 2.75 0 0 1-2.6 2.75" }),
62
+ /* @__PURE__ */ n("path", { d: "M10 11.25v5M7 16.25h6" })
63
+ ] })), j = /* @__PURE__ */ e("CalendarIcon", /* @__PURE__ */ r(t, { children: [/* @__PURE__ */ n("rect", {
64
+ x: "3.5",
65
+ y: "4.5",
66
+ width: "13",
67
+ height: "12",
68
+ rx: "1.5"
69
+ }), /* @__PURE__ */ n("path", { d: "M3.5 8.5h13M7 2.75v3.5M13 2.75v3.5" })] })), M = /* @__PURE__ */ e("UsersIcon", /* @__PURE__ */ r(t, { children: [
70
+ /* @__PURE__ */ n("circle", {
71
+ cx: "7.5",
72
+ cy: "7",
73
+ r: "2.75"
74
+ }),
75
+ /* @__PURE__ */ n("path", { d: "M2.75 16.25a4.75 4.75 0 0 1 9.5 0" }),
76
+ /* @__PURE__ */ n("path", { d: "M12.75 4.6a2.75 2.75 0 0 1 0 4.8M14.5 11.9a4.75 4.75 0 0 1 2.75 4.35" })
77
+ ] })), N = /* @__PURE__ */ e("SwordsIcon", /* @__PURE__ */ n("path", { d: "M3.25 3.25 15.75 15.75M16.75 3.25 4.25 15.75M4.75 11.75l3.5 3.5M15.25 11.75l-3.5 3.5" })), P = /* @__PURE__ */ e("HelpIcon", /* @__PURE__ */ r(t, { children: [
78
+ /* @__PURE__ */ n("circle", {
79
+ cx: "10",
80
+ cy: "10",
81
+ r: "7"
82
+ }),
83
+ /* @__PURE__ */ n("path", { d: "M8 8a2 2 0 1 1 2.75 1.85c-.45.2-.75.62-.75 1.1v.55" }),
84
+ /* @__PURE__ */ n("path", { d: "M10 13.6v.01" })
85
+ ] })), F = /* @__PURE__ */ e("ClockIcon", /* @__PURE__ */ r(t, { children: [/* @__PURE__ */ n("circle", {
86
+ cx: "10",
87
+ cy: "10",
88
+ r: "7"
89
+ }), /* @__PURE__ */ n("path", { d: "M10 6.25V10l2.5 1.75" })] })), I = /* @__PURE__ */ e("ZapIcon", /* @__PURE__ */ n("path", { d: "M11 2.75 4.5 11.25H10l-1 6 6.5-8.5H10Z" })), L = /* @__PURE__ */ e("MessageIcon", /* @__PURE__ */ n("path", { d: "M4.75 4h10.5a1.5 1.5 0 0 1 1.5 1.5V12a1.5 1.5 0 0 1-1.5 1.5H9l-3.5 3v-3h-.75a1.5 1.5 0 0 1-1.5-1.5V5.5a1.5 1.5 0 0 1 1.5-1.5Z" })), R = /* @__PURE__ */ e("RadioIcon", /* @__PURE__ */ r(t, { children: [/* @__PURE__ */ n("circle", {
90
+ cx: "10",
91
+ cy: "10",
92
+ r: "1.5"
93
+ }), /* @__PURE__ */ n("path", { d: "M6.75 6.75a4.6 4.6 0 0 0 0 6.5M13.25 6.75a4.6 4.6 0 0 1 0 6.5M4.25 4.25a8.1 8.1 0 0 0 0 11.5M15.75 4.25a8.1 8.1 0 0 1 0 11.5" })] })), z = /* @__PURE__ */ e("ShieldIcon", /* @__PURE__ */ n("path", { d: "M10 2.75 16 5v4.75c0 3.6-2.55 6.2-6 7.5-3.45-1.3-6-3.9-6-7.5V5Z" })), B = /* @__PURE__ */ e("TargetIcon", /* @__PURE__ */ r(t, { children: [
94
+ /* @__PURE__ */ n("circle", {
95
+ cx: "10",
96
+ cy: "10",
97
+ r: "7"
98
+ }),
99
+ /* @__PURE__ */ n("circle", {
100
+ cx: "10",
101
+ cy: "10",
102
+ r: "4"
103
+ }),
104
+ /* @__PURE__ */ n("circle", {
105
+ cx: "10",
106
+ cy: "10",
107
+ r: "1"
108
+ })
109
+ ] })), V = /* @__PURE__ */ e("TrendingUpIcon", /* @__PURE__ */ n("path", { d: "M3 14.5 8 9.5l3 3 6-6M12.5 6.5H17V11" }));
60
110
  //#endregion
61
- export { f as ArrowLeftIcon, p as ArrowRightIcon, m as ArrowUpRightIcon, c as CheckIcon, i as ChevronDownIcon, o as ChevronLeftIcon, s as ChevronRightIcon, a as ChevronUpIcon, y as CircleCheckIcon, l as CloseIcon, S as CopyIcon, v as ErrorIcon, D as EyeIcon, O as EyeOffIcon, g as InfoIcon, b as MenuIcon, d as MinusIcon, w as MoonIcon, x as MoreIcon, u as PlusIcon, h as SearchIcon, E as StarIcon, C as SunIcon, T as SystemIcon, k as UploadIcon, _ as WarningIcon };
111
+ export { f as ArrowLeftIcon, p as ArrowRightIcon, m as ArrowUpRightIcon, j as CalendarIcon, c as CheckIcon, i as ChevronDownIcon, o as ChevronLeftIcon, s as ChevronRightIcon, a as ChevronUpIcon, y as CircleCheckIcon, F as ClockIcon, l as CloseIcon, S as CopyIcon, v as ErrorIcon, D as EyeIcon, O as EyeOffIcon, P as HelpIcon, g as InfoIcon, b as MenuIcon, L as MessageIcon, d as MinusIcon, w as MoonIcon, x as MoreIcon, u as PlusIcon, R as RadioIcon, h as SearchIcon, z as ShieldIcon, E as StarIcon, C as SunIcon, N as SwordsIcon, T as SystemIcon, B as TargetIcon, V as TrendingUpIcon, A as TrophyIcon, k as UploadIcon, M as UsersIcon, _ as WarningIcon, I as ZapIcon };
62
112
 
63
113
  //# sourceMappingURL=icons.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"icons.js","names":["_Fragment","ChevronDownIcon","createIcon","ChevronUpIcon","ChevronLeftIcon","ChevronRightIcon","CheckIcon","CloseIcon","PlusIcon","MinusIcon","ArrowLeftIcon","ArrowRightIcon","ArrowUpRightIcon","SearchIcon","Fragment","InfoIcon","WarningIcon","ErrorIcon","CircleCheckIcon","MenuIcon","MoreIcon","CopyIcon","SunIcon","MoonIcon","SystemIcon","StarIcon","EyeIcon","EyeOffIcon","UploadIcon"],"sources":["../../src/icons/icons.tsx"],"sourcesContent":["import { createIcon } from './Icon'\n\n/* Deliberately few. Components need these; apps bring their own set for everything else. */\n\nexport const ChevronDownIcon = createIcon('ChevronDownIcon', <path d=\"M5.5 8 10 12.5 14.5 8\" />)\nexport const ChevronUpIcon = createIcon('ChevronUpIcon', <path d=\"M5.5 12 10 7.5 14.5 12\" />)\nexport const ChevronLeftIcon = createIcon('ChevronLeftIcon', <path d=\"M12 5.5 7.5 10 12 14.5\" />)\nexport const ChevronRightIcon = createIcon('ChevronRightIcon', <path d=\"M8 5.5 12.5 10 8 14.5\" />)\nexport const CheckIcon = createIcon('CheckIcon', <path d=\"M4.5 10.5 8.25 14 15.5 6.5\" />)\nexport const CloseIcon = createIcon('CloseIcon', <path d=\"M5.5 5.5l9 9m0-9-9 9\" />)\nexport const PlusIcon = createIcon('PlusIcon', <path d=\"M10 4.5v11M4.5 10h11\" />)\nexport const MinusIcon = createIcon('MinusIcon', <path d=\"M4.5 10h11\" />)\nexport const ArrowLeftIcon = createIcon(\n 'ArrowLeftIcon',\n <path d=\"M15.5 10h-11m4.5-4.5L4.5 10 9 14.5\" />,\n)\nexport const ArrowRightIcon = createIcon(\n 'ArrowRightIcon',\n <path d=\"M4.5 10h11M11 5.5l4.5 4.5-4.5 4.5\" />,\n)\nexport const ArrowUpRightIcon = createIcon(\n 'ArrowUpRightIcon',\n <path d=\"M6.5 13.5l7-7M7.5 6.5h6v6\" />,\n)\nexport const SearchIcon = createIcon(\n 'SearchIcon',\n <>\n <circle cx=\"9\" cy=\"9\" r=\"4.75\" />\n <path d=\"m12.5 12.5 3.5 3.5\" />\n </>,\n)\nexport const InfoIcon = createIcon(\n 'InfoIcon',\n <>\n <circle cx=\"10\" cy=\"10\" r=\"7\" />\n <path d=\"M10 9.25v4.25\" />\n <path d=\"M10 6.6v.01\" />\n </>,\n)\nexport const WarningIcon = createIcon(\n 'WarningIcon',\n <>\n <path d=\"M10 3.5 17 16H3z\" />\n <path d=\"M10 8.5v3.5\" />\n <path d=\"M10 14.1v.01\" />\n </>,\n)\nexport const ErrorIcon = createIcon(\n 'ErrorIcon',\n <>\n <circle cx=\"10\" cy=\"10\" r=\"7\" />\n <path d=\"M10 6.5v4.5\" />\n <path d=\"M10 13.6v.01\" />\n </>,\n)\nexport const CircleCheckIcon = createIcon(\n 'CircleCheckIcon',\n <>\n <circle cx=\"10\" cy=\"10\" r=\"7\" />\n <path d=\"m7 10.25 2.1 2 3.9-4.25\" />\n </>,\n)\nexport const MenuIcon = createIcon('MenuIcon', <path d=\"M3.5 6.5h13M3.5 10h13M3.5 13.5h13\" />)\nexport const MoreIcon = createIcon(\n 'MoreIcon',\n <path d=\"M5 10v.01M10 10v.01M15 10v.01\" strokeWidth=\"2.25\" />,\n)\nexport const CopyIcon = createIcon(\n 'CopyIcon',\n <>\n <rect x=\"7\" y=\"7\" width=\"9\" height=\"9\" rx=\"1.5\" />\n <path d=\"M13 4.5H5.5a1 1 0 0 0-1 1V13\" />\n </>,\n)\nexport const SunIcon = createIcon(\n 'SunIcon',\n <>\n <circle cx=\"10\" cy=\"10\" r=\"3.25\" />\n <path d=\"M10 2.75v1.5M10 15.75v1.5M2.75 10h1.5M15.75 10h1.5M4.9 4.9l1.05 1.05M14.05 14.05l1.05 1.05M4.9 15.1l1.05-1.05M14.05 5.95l1.05-1.05\" />\n </>,\n)\nexport const MoonIcon = createIcon(\n 'MoonIcon',\n <path d=\"M15.5 12.4A6.25 6.25 0 0 1 7.6 4.5a6.25 6.25 0 1 0 7.9 7.9Z\" />,\n)\nexport const SystemIcon = createIcon(\n 'SystemIcon',\n <>\n <rect x=\"3\" y=\"4\" width=\"14\" height=\"9.5\" rx=\"1.25\" />\n <path d=\"M7.5 16.5h5M10 13.5v3\" />\n </>,\n)\nexport const StarIcon = createIcon(\n 'StarIcon',\n <path d=\"M10 3.25 12.3 8l5.2.75-3.75 3.66.9 5.2L10 15.1l-4.65 2.5.9-5.2-3.75-3.66L7.7 8Z\" />,\n)\nexport const EyeIcon = createIcon(\n 'EyeIcon',\n <>\n <path d=\"M2.5 10S5.5 4.75 10 4.75 17.5 10 17.5 10 14.5 15.25 10 15.25 2.5 10 2.5 10Z\" />\n <circle cx=\"10\" cy=\"10\" r=\"2.25\" />\n </>,\n)\nexport const EyeOffIcon = createIcon(\n 'EyeOffIcon',\n <>\n <path d=\"M4.4 4.4 15.6 15.6\" />\n <path d=\"M8.2 5.05C8.77 4.86 9.37 4.75 10 4.75c4.5 0 7.5 5.25 7.5 5.25s-.85 1.5-2.35 2.85M6.3 6.3C4.15 7.6 2.5 10 2.5 10s3 5.25 7.5 5.25c1.1 0 2.08-.32 2.93-.8\" />\n <path d=\"M7.9 8.15A2.25 2.25 0 0 0 10 12.25c.42 0 .8-.1 1.15-.28\" />\n </>,\n)\nexport const UploadIcon = createIcon(\n 'UploadIcon',\n <>\n <path d=\"M10 13.25v-8.5M6.75 8 10 4.75 13.25 8\" />\n <path d=\"M3.75 14.25v1a1.5 1.5 0 0 0 1.5 1.5h9.5a1.5 1.5 0 0 0 1.5-1.5v-1\" />\n </>,\n)\n"],"mappings":";;;AAIA,IAAaC,IAAkBC,EAAW,mBAAmB,kBAAC,QAAD,EAAM,GAAE,wBAAyB,CAAA,CAAC,GAClFC,IAAgBD,EAAW,iBAAiB,kBAAC,QAAD,EAAM,GAAE,yBAA0B,CAAA,CAAC,GAC/EE,IAAkBF,EAAW,mBAAmB,kBAAC,QAAD,EAAM,GAAE,yBAA0B,CAAA,CAAC,GACnFG,IAAmBH,EAAW,oBAAoB,kBAAC,QAAD,EAAM,GAAE,wBAAyB,CAAA,CAAC,GACpFI,IAAYJ,EAAW,aAAa,kBAAC,QAAD,EAAM,GAAE,6BAA8B,CAAA,CAAC,GAC3EK,IAAYL,EAAW,aAAa,kBAAC,QAAD,EAAM,GAAE,uBAAwB,CAAA,CAAC,GACrEM,IAAWN,EAAW,YAAY,kBAAC,QAAD,EAAM,GAAE,uBAAwB,CAAA,CAAC,GACnEO,IAAYP,EAAW,aAAa,kBAAC,QAAD,EAAM,GAAE,aAAc,CAAA,CAAC,GAC3DQ,IAAgBR,EAC3B,iBACA,kBAAC,QAAD,EAAM,GAAE,qCAAsC,CAAA,CAChD,GACaS,IAAiBT,EAC5B,kBACA,kBAAC,QAAD,EAAM,GAAE,oCAAqC,CAAA,CAC/C,GACaU,IAAmBV,EAC9B,oBACA,kBAAC,QAAD,EAAM,GAAE,4BAA6B,CAAA,CACvC,GACaW,IAAaX,EACxB,cACA,kBAAAF,GAAA,EAAA,UAAA,CACE,kBAAC,UAAD;CAAQ,IAAG;CAAI,IAAG;CAAI,GAAE;AAAQ,CAAA,GAChC,kBAAC,QAAD,EAAM,GAAE,qBAAsB,CAAA,CAC9B,EAAA,CAAA,CACJ,GACae,IAAWb,EACtB,YACA,kBAAAF,GAAA,EAAA,UAAA;CACE,kBAAC,UAAD;EAAQ,IAAG;EAAK,IAAG;EAAK,GAAE;CAAK,CAAA;CAC/B,kBAAC,QAAD,EAAM,GAAE,gBAAiB,CAAA;CACzB,kBAAC,QAAD,EAAM,GAAE,cAAe,CAAA;AACvB,EAAA,CAAA,CACJ,GACagB,IAAcd,EACzB,eACA,kBAAAF,GAAA,EAAA,UAAA;CACE,kBAAC,QAAD,EAAM,GAAE,mBAAoB,CAAA;CAC5B,kBAAC,QAAD,EAAM,GAAE,cAAe,CAAA;CACvB,kBAAC,QAAD,EAAM,GAAE,eAAgB,CAAA;AACxB,EAAA,CAAA,CACJ,GACaiB,IAAYf,EACvB,aACA,kBAAAF,GAAA,EAAA,UAAA;CACE,kBAAC,UAAD;EAAQ,IAAG;EAAK,IAAG;EAAK,GAAE;CAAK,CAAA;CAC/B,kBAAC,QAAD,EAAM,GAAE,cAAe,CAAA;CACvB,kBAAC,QAAD,EAAM,GAAE,eAAgB,CAAA;AACxB,EAAA,CAAA,CACJ,GACakB,IAAkBhB,EAC7B,mBACA,kBAAAF,GAAA,EAAA,UAAA,CACE,kBAAC,UAAD;CAAQ,IAAG;CAAK,IAAG;CAAK,GAAE;AAAK,CAAA,GAC/B,kBAAC,QAAD,EAAM,GAAE,0BAA2B,CAAA,CACnC,EAAA,CAAA,CACJ,GACamB,IAAWjB,EAAW,YAAY,kBAAC,QAAD,EAAM,GAAE,oCAAqC,CAAA,CAAC,GAChFkB,IAAWlB,EACtB,YACA,kBAAC,QAAD;CAAM,GAAE;CAAgC,aAAY;AAAQ,CAAA,CAC9D,GACamB,IAAWnB,EACtB,YACA,kBAAAF,GAAA,EAAA,UAAA,CACE,kBAAC,QAAD;CAAM,GAAE;CAAI,GAAE;CAAI,OAAM;CAAI,QAAO;CAAI,IAAG;AAAO,CAAA,GACjD,kBAAC,QAAD,EAAM,GAAE,+BAAgC,CAAA,CACxC,EAAA,CAAA,CACJ,GACasB,IAAUpB,EACrB,WACA,kBAAAF,GAAA,EAAA,UAAA,CACE,kBAAC,UAAD;CAAQ,IAAG;CAAK,IAAG;CAAK,GAAE;AAAQ,CAAA,GAClC,kBAAC,QAAD,EAAM,GAAE,qIAAsI,CAAA,CAC9I,EAAA,CAAA,CACJ,GACauB,IAAWrB,EACtB,YACA,kBAAC,QAAD,EAAM,GAAE,8DAA+D,CAAA,CACzE,GACasB,IAAatB,EACxB,cACA,kBAAAF,GAAA,EAAA,UAAA,CACE,kBAAC,QAAD;CAAM,GAAE;CAAI,GAAE;CAAI,OAAM;CAAK,QAAO;CAAM,IAAG;AAAQ,CAAA,GACrD,kBAAC,QAAD,EAAM,GAAE,wBAAyB,CAAA,CACjC,EAAA,CAAA,CACJ,GACayB,IAAWvB,EACtB,YACA,kBAAC,QAAD,EAAM,GAAE,kFAAmF,CAAA,CAC7F,GACawB,IAAUxB,EACrB,WACA,kBAAAF,GAAA,EAAA,UAAA,CACE,kBAAC,QAAD,EAAM,GAAE,8EAA+E,CAAA,GACvF,kBAAC,UAAD;CAAQ,IAAG;CAAK,IAAG;CAAK,GAAE;AAAQ,CAAA,CAClC,EAAA,CAAA,CACJ,GACa2B,IAAazB,EACxB,cACA,kBAAAF,GAAA,EAAA,UAAA;CACE,kBAAC,QAAD,EAAM,GAAE,qBAAsB,CAAA;CAC9B,kBAAC,QAAD,EAAM,GAAE,yJAA0J,CAAA;CAClK,kBAAC,QAAD,EAAM,GAAE,0DAA2D,CAAA;AACnE,EAAA,CAAA,CACJ,GACa4B,IAAa1B,EACxB,cACA,kBAAAF,GAAA,EAAA,UAAA,CACE,kBAAC,QAAD,EAAM,GAAE,wCAAyC,CAAA,GACjD,kBAAC,QAAD,EAAM,GAAE,mEAAoE,CAAA,CAC5E,EAAA,CAAA,CACJ"}
1
+ {"version":3,"file":"icons.js","names":["_Fragment","ChevronDownIcon","ChevronUpIcon","ChevronLeftIcon","ChevronRightIcon","CheckIcon","CloseIcon","PlusIcon","MinusIcon","ArrowLeftIcon","ArrowRightIcon","ArrowUpRightIcon","SearchIcon","Fragment","InfoIcon","WarningIcon","ErrorIcon","CircleCheckIcon","MenuIcon","MoreIcon","CopyIcon","SunIcon","MoonIcon","SystemIcon","StarIcon","EyeIcon","EyeOffIcon","UploadIcon","TrophyIcon","CalendarIcon","UsersIcon","SwordsIcon","HelpIcon","ClockIcon","ZapIcon","MessageIcon","RadioIcon","ShieldIcon","TargetIcon","TrendingUpIcon"],"sources":["../../src/icons/icons.tsx"],"sourcesContent":["import { createIcon } from './Icon'\n\n/* The glyphs Kiln's own components need. */\n\nexport const ChevronDownIcon = createIcon('ChevronDownIcon', <path d=\"M5.5 8 10 12.5 14.5 8\" />)\nexport const ChevronUpIcon = createIcon('ChevronUpIcon', <path d=\"M5.5 12 10 7.5 14.5 12\" />)\nexport const ChevronLeftIcon = createIcon('ChevronLeftIcon', <path d=\"M12 5.5 7.5 10 12 14.5\" />)\nexport const ChevronRightIcon = createIcon('ChevronRightIcon', <path d=\"M8 5.5 12.5 10 8 14.5\" />)\nexport const CheckIcon = createIcon('CheckIcon', <path d=\"M4.5 10.5 8.25 14 15.5 6.5\" />)\nexport const CloseIcon = createIcon('CloseIcon', <path d=\"M5.5 5.5l9 9m0-9-9 9\" />)\nexport const PlusIcon = createIcon('PlusIcon', <path d=\"M10 4.5v11M4.5 10h11\" />)\nexport const MinusIcon = createIcon('MinusIcon', <path d=\"M4.5 10h11\" />)\nexport const ArrowLeftIcon = createIcon(\n 'ArrowLeftIcon',\n <path d=\"M15.5 10h-11m4.5-4.5L4.5 10 9 14.5\" />,\n)\nexport const ArrowRightIcon = createIcon(\n 'ArrowRightIcon',\n <path d=\"M4.5 10h11M11 5.5l4.5 4.5-4.5 4.5\" />,\n)\nexport const ArrowUpRightIcon = createIcon(\n 'ArrowUpRightIcon',\n <path d=\"M6.5 13.5l7-7M7.5 6.5h6v6\" />,\n)\nexport const SearchIcon = createIcon(\n 'SearchIcon',\n <>\n <circle cx=\"9\" cy=\"9\" r=\"4.75\" />\n <path d=\"m12.5 12.5 3.5 3.5\" />\n </>,\n)\nexport const InfoIcon = createIcon(\n 'InfoIcon',\n <>\n <circle cx=\"10\" cy=\"10\" r=\"7\" />\n <path d=\"M10 9.25v4.25\" />\n <path d=\"M10 6.6v.01\" />\n </>,\n)\nexport const WarningIcon = createIcon(\n 'WarningIcon',\n <>\n <path d=\"M10 3.5 17 16H3z\" />\n <path d=\"M10 8.5v3.5\" />\n <path d=\"M10 14.1v.01\" />\n </>,\n)\nexport const ErrorIcon = createIcon(\n 'ErrorIcon',\n <>\n <circle cx=\"10\" cy=\"10\" r=\"7\" />\n <path d=\"M10 6.5v4.5\" />\n <path d=\"M10 13.6v.01\" />\n </>,\n)\nexport const CircleCheckIcon = createIcon(\n 'CircleCheckIcon',\n <>\n <circle cx=\"10\" cy=\"10\" r=\"7\" />\n <path d=\"m7 10.25 2.1 2 3.9-4.25\" />\n </>,\n)\nexport const MenuIcon = createIcon('MenuIcon', <path d=\"M3.5 6.5h13M3.5 10h13M3.5 13.5h13\" />)\nexport const MoreIcon = createIcon(\n 'MoreIcon',\n <path d=\"M5 10v.01M10 10v.01M15 10v.01\" strokeWidth=\"2.25\" />,\n)\nexport const CopyIcon = createIcon(\n 'CopyIcon',\n <>\n <rect x=\"7\" y=\"7\" width=\"9\" height=\"9\" rx=\"1.5\" />\n <path d=\"M13 4.5H5.5a1 1 0 0 0-1 1V13\" />\n </>,\n)\nexport const SunIcon = createIcon(\n 'SunIcon',\n <>\n <circle cx=\"10\" cy=\"10\" r=\"3.25\" />\n <path d=\"M10 2.75v1.5M10 15.75v1.5M2.75 10h1.5M15.75 10h1.5M4.9 4.9l1.05 1.05M14.05 14.05l1.05 1.05M4.9 15.1l1.05-1.05M14.05 5.95l1.05-1.05\" />\n </>,\n)\nexport const MoonIcon = createIcon(\n 'MoonIcon',\n <path d=\"M15.5 12.4A6.25 6.25 0 0 1 7.6 4.5a6.25 6.25 0 1 0 7.9 7.9Z\" />,\n)\nexport const SystemIcon = createIcon(\n 'SystemIcon',\n <>\n <rect x=\"3\" y=\"4\" width=\"14\" height=\"9.5\" rx=\"1.25\" />\n <path d=\"M7.5 16.5h5M10 13.5v3\" />\n </>,\n)\nexport const StarIcon = createIcon(\n 'StarIcon',\n <path d=\"M10 3.25 12.3 8l5.2.75-3.75 3.66.9 5.2L10 15.1l-4.65 2.5.9-5.2-3.75-3.66L7.7 8Z\" />,\n)\nexport const EyeIcon = createIcon(\n 'EyeIcon',\n <>\n <path d=\"M2.5 10S5.5 4.75 10 4.75 17.5 10 17.5 10 14.5 15.25 10 15.25 2.5 10 2.5 10Z\" />\n <circle cx=\"10\" cy=\"10\" r=\"2.25\" />\n </>,\n)\nexport const EyeOffIcon = createIcon(\n 'EyeOffIcon',\n <>\n <path d=\"M4.4 4.4 15.6 15.6\" />\n <path d=\"M8.2 5.05C8.77 4.86 9.37 4.75 10 4.75c4.5 0 7.5 5.25 7.5 5.25s-.85 1.5-2.35 2.85M6.3 6.3C4.15 7.6 2.5 10 2.5 10s3 5.25 7.5 5.25c1.1 0 2.08-.32 2.93-.8\" />\n <path d=\"M7.9 8.15A2.25 2.25 0 0 0 10 12.25c.42 0 .8-.1 1.15-.28\" />\n </>,\n)\nexport const UploadIcon = createIcon(\n 'UploadIcon',\n <>\n <path d=\"M10 13.25v-8.5M6.75 8 10 4.75 13.25 8\" />\n <path d=\"M3.75 14.25v1a1.5 1.5 0 0 0 1.5 1.5h9.5a1.5 1.5 0 0 0 1.5-1.5v-1\" />\n </>,\n)\n\n/* Common app glyphs: navigation and page furniture most apps need, so a bottom nav or a stat\n tile doesn't need a second icon set beside Kiln's. */\n\nexport const TrophyIcon = createIcon(\n 'TrophyIcon',\n <>\n <path d=\"M6.5 3.75h7v4a3.5 3.5 0 0 1-7 0Z\" />\n <path d=\"M6.5 5.25H4.25v.75a2.75 2.75 0 0 0 2.6 2.75M13.5 5.25h2.25v.75a2.75 2.75 0 0 1-2.6 2.75\" />\n <path d=\"M10 11.25v5M7 16.25h6\" />\n </>,\n)\nexport const CalendarIcon = createIcon(\n 'CalendarIcon',\n <>\n <rect x=\"3.5\" y=\"4.5\" width=\"13\" height=\"12\" rx=\"1.5\" />\n <path d=\"M3.5 8.5h13M7 2.75v3.5M13 2.75v3.5\" />\n </>,\n)\nexport const UsersIcon = createIcon(\n 'UsersIcon',\n <>\n <circle cx=\"7.5\" cy=\"7\" r=\"2.75\" />\n <path d=\"M2.75 16.25a4.75 4.75 0 0 1 9.5 0\" />\n <path d=\"M12.75 4.6a2.75 2.75 0 0 1 0 4.8M14.5 11.9a4.75 4.75 0 0 1 2.75 4.35\" />\n </>,\n)\nexport const SwordsIcon = createIcon(\n 'SwordsIcon',\n <path d=\"M3.25 3.25 15.75 15.75M16.75 3.25 4.25 15.75M4.75 11.75l3.5 3.5M15.25 11.75l-3.5 3.5\" />,\n)\nexport const HelpIcon = createIcon(\n 'HelpIcon',\n <>\n <circle cx=\"10\" cy=\"10\" r=\"7\" />\n <path d=\"M8 8a2 2 0 1 1 2.75 1.85c-.45.2-.75.62-.75 1.1v.55\" />\n <path d=\"M10 13.6v.01\" />\n </>,\n)\nexport const ClockIcon = createIcon(\n 'ClockIcon',\n <>\n <circle cx=\"10\" cy=\"10\" r=\"7\" />\n <path d=\"M10 6.25V10l2.5 1.75\" />\n </>,\n)\nexport const ZapIcon = createIcon('ZapIcon', <path d=\"M11 2.75 4.5 11.25H10l-1 6 6.5-8.5H10Z\" />)\nexport const MessageIcon = createIcon(\n 'MessageIcon',\n <path d=\"M4.75 4h10.5a1.5 1.5 0 0 1 1.5 1.5V12a1.5 1.5 0 0 1-1.5 1.5H9l-3.5 3v-3h-.75a1.5 1.5 0 0 1-1.5-1.5V5.5a1.5 1.5 0 0 1 1.5-1.5Z\" />,\n)\nexport const RadioIcon = createIcon(\n 'RadioIcon',\n <>\n <circle cx=\"10\" cy=\"10\" r=\"1.5\" />\n <path d=\"M6.75 6.75a4.6 4.6 0 0 0 0 6.5M13.25 6.75a4.6 4.6 0 0 1 0 6.5M4.25 4.25a8.1 8.1 0 0 0 0 11.5M15.75 4.25a8.1 8.1 0 0 1 0 11.5\" />\n </>,\n)\nexport const ShieldIcon = createIcon(\n 'ShieldIcon',\n <path d=\"M10 2.75 16 5v4.75c0 3.6-2.55 6.2-6 7.5-3.45-1.3-6-3.9-6-7.5V5Z\" />,\n)\nexport const TargetIcon = createIcon(\n 'TargetIcon',\n <>\n <circle cx=\"10\" cy=\"10\" r=\"7\" />\n <circle cx=\"10\" cy=\"10\" r=\"4\" />\n <circle cx=\"10\" cy=\"10\" r=\"1\" />\n </>,\n)\nexport const TrendingUpIcon = createIcon(\n 'TrendingUpIcon',\n <path d=\"M3 14.5 8 9.5l3 3 6-6M12.5 6.5H17V11\" />,\n)\n"],"mappings":"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"}