@slotted/angular 0.1.0-beta.2 → 0.1.0-beta.3

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 (106) hide show
  1. package/docs/app-shell.json +1 -1
  2. package/docs/button-group.json +1 -0
  3. package/docs/button-group.md +1 -1
  4. package/docs/button.json +45 -11
  5. package/docs/button.md +10 -6
  6. package/docs/chart.json +7 -0
  7. package/docs/chart.md +1 -0
  8. package/docs/currency-field.json +32 -1
  9. package/docs/currency-field.md +4 -1
  10. package/docs/dialog.examples.md +20 -0
  11. package/docs/dialog.json +14 -2
  12. package/docs/dialog.md +1 -1
  13. package/docs/list.json +19 -1
  14. package/docs/list.md +3 -1
  15. package/docs/popover.json +1 -1
  16. package/docs/segmented-control.json +29 -1
  17. package/docs/segmented-control.md +17 -1
  18. package/docs/skills/theme-app/SKILL.md +5 -0
  19. package/docs/split-button.json +1 -0
  20. package/docs/split-button.md +1 -1
  21. package/docs/stat-card.json +1 -0
  22. package/docs/stat-card.md +1 -1
  23. package/docs/table.examples.md +1 -1
  24. package/docs/table.json +70 -1
  25. package/docs/table.md +10 -1
  26. package/docs/toggle-group.json +14 -3
  27. package/docs/toggle-group.md +3 -3
  28. package/docs/toggle.json +12 -3
  29. package/docs/toggle.md +3 -3
  30. package/docs/tokens.md +25 -1
  31. package/docs/tour.json +1 -1
  32. package/fesm2022/slotted-angular-app-shell.mjs +48 -16
  33. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
  34. package/fesm2022/slotted-angular-button-group.mjs +4 -4
  35. package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
  36. package/fesm2022/slotted-angular-button.mjs +51 -19
  37. package/fesm2022/slotted-angular-button.mjs.map +1 -1
  38. package/fesm2022/slotted-angular-cascader.mjs +1 -1
  39. package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
  40. package/fesm2022/slotted-angular-chart.mjs +41 -20
  41. package/fesm2022/slotted-angular-chart.mjs.map +1 -1
  42. package/fesm2022/slotted-angular-column-manager.mjs +1 -1
  43. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
  44. package/fesm2022/slotted-angular-currency-field.mjs +59 -8
  45. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
  46. package/fesm2022/slotted-angular-dashboard-grid.mjs +1 -1
  47. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
  48. package/fesm2022/slotted-angular-data-grid.mjs +2 -2
  49. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
  50. package/fesm2022/slotted-angular-data-list.mjs +2 -2
  51. package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
  52. package/fesm2022/slotted-angular-dialog.mjs +4 -4
  53. package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
  54. package/fesm2022/slotted-angular-event-calendar.mjs +1 -1
  55. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
  56. package/fesm2022/slotted-angular-filter-bar.mjs +8 -8
  57. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
  58. package/fesm2022/slotted-angular-import-export-center.mjs +1 -1
  59. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
  60. package/fesm2022/slotted-angular-list.mjs +28 -17
  61. package/fesm2022/slotted-angular-list.mjs.map +1 -1
  62. package/fesm2022/slotted-angular-markdown.mjs +1 -1
  63. package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
  64. package/fesm2022/slotted-angular-notification-center.mjs +1 -1
  65. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
  66. package/fesm2022/slotted-angular-saved-views.mjs +1 -1
  67. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
  68. package/fesm2022/slotted-angular-segmented-control.mjs +25 -5
  69. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
  70. package/fesm2022/slotted-angular-split-button.mjs +4 -4
  71. package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
  72. package/fesm2022/slotted-angular-stat-card.mjs +2 -2
  73. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
  74. package/fesm2022/slotted-angular-table.mjs +94 -7
  75. package/fesm2022/slotted-angular-table.mjs.map +1 -1
  76. package/fesm2022/slotted-angular-toggle-group.mjs +17 -4
  77. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
  78. package/fesm2022/slotted-angular-toggle.mjs +2 -2
  79. package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
  80. package/fesm2022/slotted-angular-tour.mjs +1 -1
  81. package/fesm2022/slotted-angular-tour.mjs.map +1 -1
  82. package/fesm2022/slotted-angular-transfer.mjs +1 -1
  83. package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
  84. package/fesm2022/slotted-angular-wizard.mjs +1 -1
  85. package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
  86. package/package.json +3 -3
  87. package/types/slotted-angular-app-shell.d.ts +6 -0
  88. package/types/slotted-angular-app-shell.d.ts.map +1 -1
  89. package/types/slotted-angular-button-group.d.ts +1 -1
  90. package/types/slotted-angular-button.d.ts +33 -13
  91. package/types/slotted-angular-button.d.ts.map +1 -1
  92. package/types/slotted-angular-chart.d.ts +9 -0
  93. package/types/slotted-angular-chart.d.ts.map +1 -1
  94. package/types/slotted-angular-currency-field.d.ts +25 -3
  95. package/types/slotted-angular-currency-field.d.ts.map +1 -1
  96. package/types/slotted-angular-list.d.ts +42 -27
  97. package/types/slotted-angular-list.d.ts.map +1 -1
  98. package/types/slotted-angular-segmented-control.d.ts +15 -2
  99. package/types/slotted-angular-segmented-control.d.ts.map +1 -1
  100. package/types/slotted-angular-split-button.d.ts +2 -2
  101. package/types/slotted-angular-table.d.ts +43 -3
  102. package/types/slotted-angular-table.d.ts.map +1 -1
  103. package/types/slotted-angular-toggle-group.d.ts +8 -2
  104. package/types/slotted-angular-toggle-group.d.ts.map +1 -1
  105. package/types/slotted-angular-toggle.d.ts +1 -1
  106. package/types/slotted-angular-toggle.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-split-button.mjs","sources":["../../split-button/src/split-button-defaults.ts","../../split-button/src/split-button.ts","../../split-button/src/split-button-parts.ts","../../split-button/src/slotted-angular-split-button.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { ButtonSize, ButtonTone, ButtonVariant } from '@slotted/angular/button';\n\n/**\n * What a split button paints itself as here, before it states anything of\n * its own. Every axis is optional: an unset one falls through to `button`'s\n * own token, which is where an application that paints every action at once\n * already set it, and then to the contract's defaults.\n */\nexport interface SplitButtonDefaults {\n size?: ButtonSize | undefined;\n tone?: ButtonTone | undefined;\n variant?: ButtonVariant | undefined;\n}\n\nexport const SPLIT_BUTTON_DEFAULTS = new InjectionToken<SplitButtonDefaults>(\n 'slotted split button defaults',\n { providedIn: 'root', factory: (): SplitButtonDefaults => ({}) },\n);\n\n/**\n * An application decides once how its split buttons are painted rather than\n * repeating three inputs on every one. A split button that states an axis\n * itself still wins.\n */\nexport function provideSplitButtonDefaults(defaults: SplitButtonDefaults) {\n return { provide: SPLIT_BUTTON_DEFAULTS, useValue: defaults };\n}\n\nexport function injectSplitButtonDefaults(): SplitButtonDefaults {\n return inject(SPLIT_BUTTON_DEFAULTS);\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n HostAttributeToken,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { WritableSignal } from '@angular/core';\nimport { BUTTON_DEFAULTS_TOKEN } from '@slotted/angular/button';\nimport type {\n ButtonDefaults,\n ButtonSize,\n ButtonTone,\n ButtonVariant,\n} from '@slotted/angular/button';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nimport { injectSplitButtonDefaults } from './split-button-defaults';\n\n/**\n * Why the remembered value moved. The menu's radio group produces exactly\n * these two, and the family surfaces them unchanged.\n */\nexport type SplitButtonValueReason = 'pointer' | 'keyboard';\n\n/**\n * The three axes the root hands down to both halves, through the button\n * family's own defaults token rather than through a second channel of this\n * family's invention — the mechanism `button-group` uses, and the reason an\n * explicit input on a half still wins. Getters, so a half's `computed` tracks\n * the root's signals.\n */\nfunction provideHalvesPaint() {\n return {\n provide: BUTTON_DEFAULTS_TOKEN,\n useFactory: (): ButtonDefaults => {\n const root = inject(SlSplitButton);\n return {\n get size() {\n return root.resolvedSize();\n },\n get tone() {\n return root.resolvedTone();\n },\n get variant() {\n return root.resolvedVariant();\n },\n };\n },\n };\n}\n\n/**\n * An action and the menu of its alternatives, joined into one shape.\n *\n * The root is a `group` of two `button`s: the primary, `SlButton` carrying\n * this family's part, and the menu trigger, `SlIconButton` carrying the\n * other and hosting `slMenuTriggerFor`. Each keeps its role, its state and\n * its own tab stop — every surveyed split button gives the pair two — and\n * the root hands them one appearance through `button`'s own token. The menu\n * is the consumer's own `sl-menu`, written inside the root, and nothing of\n * it is restated here.\n *\n * `remember` is the one decision the family adds. Off, the alternatives are\n * actions. On, the radio group carrying `slSplitButtonChoices` is bound to\n * the root's value, and the consumer renders the primary's label from that\n * value — the merge button whose strategy a repository remembers. A silent\n * update was refused because it changes what the next click does.\n */\n@Component({\n selector: '[slSplitButton]',\n standalone: true,\n exportAs: 'slSplitButton',\n template: '<ng-content></ng-content>',\n styleUrl: '../../../styles/src/split-button/split-button.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [provideHalvesPaint()],\n host: {\n 'data-ui': 'split-button',\n 'data-part': 'root',\n '[attr.role]': 'role',\n '[attr.data-tone]': 'resolvedTone()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-full-width]': 'fullWidth() ? \"\" : null',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-loading]': 'loading() ? \"\" : null',\n },\n})\nexport class SlSplitButton {\n readonly size = input<ButtonSize | undefined>(undefined);\n readonly tone = input<ButtonTone | undefined>(undefined);\n readonly variant = input<ButtonVariant | undefined>(undefined);\n /** The action takes the line; the menu trigger stays square. */\n readonly fullWidth = input(false, { transform: booleanAttribute });\n /** Takes both halves out. Each half keeps the native attribute for itself. */\n readonly disabled = input(false, { transform: booleanAttribute });\n /**\n * The action is in flight: the primary shows `button`'s indicator with its\n * width and name held, and the menu trigger is `aria-disabled` for the\n * duration — still in the tab sequence, still named, still painted — so a\n * second alternative cannot be chosen while the first runs.\n */\n readonly loading = input(false, { transform: booleanAttribute });\n /**\n * The choice in the menu becomes the action. Off, the menu's items are\n * actions; on, the items inside the radio group carrying\n * `slSplitButtonChoices` are bound to `value`.\n */\n readonly remember = input(false, { transform: booleanAttribute });\n\n /** The remembered value. Present at all puts it in controlled mode. */\n readonly value = input<string | undefined>(undefined);\n /** The value an uncontrolled split button remembers first, read once. */\n readonly defaultValue = input<string | undefined>(undefined);\n /**\n * One output for one transition, carrying the value, the value it\n * replaces, the reason, the originating event and `cancel()`.\n */\n readonly valueChange = output<ChangeRequest<string>>();\n\n private readonly defaults = injectSplitButtonDefaults();\n private readonly inherited = inject(BUTTON_DEFAULTS_TOKEN, { skipSelf: true });\n /**\n * A static attribute the consumer wrote survives the host binding, so a\n * root that is already inside a named group can give the role up with\n * `role=\"\"`, the way `button-group` lets it.\n */\n private readonly writtenRole = inject(new HostAttributeToken('role'), { optional: true });\n protected readonly role = this.writtenRole === '' ? null : (this.writtenRole ?? 'group');\n\n private readonly own: WritableSignal<string | undefined> = signal(undefined);\n\n /* Resolution: the input, the family's defaults, `button`'s defaults, then\n the contract's. */\n readonly resolvedSize = computed(\n () => this.size() ?? this.defaults.size ?? this.inherited.size ?? 'md',\n );\n readonly resolvedTone = computed(\n () => this.tone() ?? this.defaults.tone ?? this.inherited.tone ?? 'accent',\n );\n readonly resolvedVariant = computed(\n () => this.variant() ?? this.defaults.variant ?? this.inherited.variant ?? 'solid',\n );\n /** The remembered value, under `remember`; nothing otherwise. */\n readonly resolvedValue = computed(() =>\n this.remember() ? (this.value() ?? this.own() ?? this.defaultValue()) : undefined,\n );\n\n /** Asks the family to remember one alternative as the action. */\n select(next: string, reason: SplitButtonValueReason, source?: unknown): boolean {\n const state = createControllable<string>({\n controlled: this.value(),\n initial: this.resolvedValue() ?? '',\n onRequest: (request) => this.valueChange.emit(request),\n });\n const accepted = state.request(next, reason, source);\n if (accepted) this.own.set(next);\n return accepted;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport {\n blockActivation,\n BUTTON_WAIT,\n resolveInertness,\n resolveLoadingIndicator,\n SlButton,\n SlIconButton,\n} from '@slotted/angular/button';\nimport { SlMenuRadioGroup, SlMenuTrigger } from '@slotted/angular/menu';\n\nimport { SlSplitButton } from './split-button';\nimport type { SplitButtonValueReason } from './split-button';\n\n/**\n * The action: `SlButton`, carrying this family's part and folding the root's\n * `disabled` and `loading` into its own. The subclass restates the template\n * and the host binding for the part, and overrides the two resolvers the\n * parent reads its state through — everything else, from `slButtonStart` to\n * the indicator, is `SlButton`'s. `button` selects itself by `data-ui` alone\n * and reads no part on its root, so the part slot is free.\n */\n@Component({\n selector: 'button[slSplitButtonPrimary]',\n standalone: true,\n template: `<ng-content select=\"[slButtonStart]\"></ng-content\n ><span data-part=\"label\"><ng-content></ng-content></span\n ><ng-content select=\"[slButtonEnd]\"></ng-content>\n @if (waiting() && !hasVisualSlot()) {\n <span\n data-part=\"indicator\"\n data-ui=\"spinner\"\n role=\"progressbar\"\n [attr.aria-label]=\"t('loading')\"\n ></span>\n }`,\n styleUrls: [\n '../../../styles/src/button/button.css',\n '../../../styles/src/spinner/spinner.css',\n '../../../styles/src/split-button/split-button.css',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slSplitButtonPrimary',\n providers: [{ provide: BUTTON_WAIT, useExisting: forwardRef(() => SlSplitButtonPrimary) }],\n host: {\n '[attr.data-part]': '\"primary\"',\n '[attr.data-disabled]': 'stateAttribute(resolvedDisabled())',\n '[attr.data-loading]': 'stateAttribute(resolvedLoading())',\n },\n})\nexport class SlSplitButtonPrimary extends SlButton {\n private readonly split = inject(SlSplitButton);\n\n readonly resolvedDisabled = computed(() => this.disabled() || this.split.disabled());\n readonly resolvedLoading = computed(() => this.loading() || this.split.loading());\n\n protected override readonly inert = resolveInertness({\n disabled: this.resolvedDisabled,\n focusableWhenDisabled: this.focusableWhenDisabled,\n loading: this.resolvedLoading,\n });\n override readonly waiting = resolveLoadingIndicator(this.resolvedLoading, this.loadingDelay);\n}\n\n/**\n * The keys of the Menu Button pattern, which `slMenuTriggerFor` answers on\n * this element and which a busy trigger has to refuse before it does.\n */\nconst OPENING_KEYS = new Set(['ArrowDown', 'ArrowUp', 'Enter', ' ']);\n\n/**\n * The menu trigger: `SlIconButton` hosting `slMenuTriggerFor` and carrying\n * this family's part. It takes `aria-haspopup`, `aria-expanded`,\n * `aria-controls` and the four keys of the Menu Button pattern from `menu`,\n * and every tone, variant and size from `button`. The chevron is the\n * family's, the `chevron-down` Glyph element in the icon part, which `button`\n * sizes; content the consumer writes replaces it; the accessible name is the consumer's, and `SlIconButton`\n * refuses to render without one in development.\n *\n * `slMenuTriggerFor` is a host directive rather than a second attribute the\n * consumer writes beside this one, and the order is the point: a host\n * directive's bindings run before the host's, so the `data-part` and the\n * `data-disabled` this component binds win over the `null` the trigger\n * binds for a control that is neither a bar's item nor a submenu's. The\n * write-back `toolbar`'s overflow needs is not needed here.\n *\n * While the root is loading the trigger is busy: `aria-disabled`, still in\n * the tab sequence, still named, still painted — no `data-disabled`, so\n * `button` does not paint it unavailable beside an action still in its\n * tone. The click is refused in the capture phase by `button`'s own guard,\n * and the opening keys are refused the same way here, before the trigger's\n * own listener sees them.\n */\n@Component({\n selector: 'button[slSplitButtonMenuTrigger]',\n standalone: true,\n imports: [SlGlyph, SlIcon],\n /* The chevron is drawn unless the consumer wrote content of their own. */\n template: `<span data-part=\"icon\"\n ><ng-content\n ><span slIcon><svg slGlyph name=\"chevron-down\"></svg></span\n ></ng-content>\n @if (waiting()) {\n <span\n data-part=\"indicator\"\n data-ui=\"spinner\"\n role=\"progressbar\"\n [attr.aria-label]=\"t('loading')\"\n ></span>\n }\n </span>`,\n styleUrls: [\n '../../../styles/src/button/button.css',\n '../../../styles/src/spinner/spinner.css',\n '../../../styles/src/split-button/split-button.css',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slSplitButtonMenuTrigger',\n hostDirectives: [{ directive: SlMenuTrigger, inputs: ['slMenuTriggerFor'] }],\n host: {\n '[attr.data-part]': '\"menu-trigger\"',\n '[attr.data-disabled]': 'stateAttribute(resolvedDisabled())',\n '[attr.aria-disabled]': 'inert.ariaDisabled()',\n '[disabled]': 'inert.nativelyDisabled()',\n },\n})\nexport class SlSplitButtonMenuTrigger extends SlIconButton {\n private readonly split = inject(SlSplitButton);\n\n readonly resolvedDisabled = computed(() => this.disabled() || this.split.disabled());\n /** The action is in flight and the menu waits with it. */\n readonly busy = computed(() => this.split.loading());\n\n protected override readonly inert = resolveInertness({\n disabled: this.resolvedDisabled,\n focusableWhenDisabled: this.focusableWhenDisabled,\n loading: this.busy,\n });\n\n constructor() {\n super();\n const element = inject(ElementRef<HTMLButtonElement>).nativeElement;\n const listener = (event: KeyboardEvent) => {\n if (this.busy() && OPENING_KEYS.has(event.key)) blockActivation(event);\n };\n element.addEventListener('keydown', listener, { capture: true });\n inject(DestroyRef).onDestroy(() =>\n element.removeEventListener('keydown', listener, { capture: true }),\n );\n }\n}\n\n/**\n * The alternatives under `remember`: the consumer's `sl-menu-radio-group`,\n * bound both ways to the root's value. The group never owns the value — its\n * own request is cancelled once forwarded, and what it shows checked is\n * written back from the root, so a controlled root the consumer has not yet\n * moved shows nothing the consumer did not agree to. The DI tree is the\n * template tree, so the group finds the root above it however the layer is\n * portaled.\n */\n@Directive({\n selector: 'sl-menu-radio-group[slSplitButtonChoices]',\n standalone: true,\n exportAs: 'slSplitButtonChoices',\n})\nexport class SlSplitButtonChoices {\n private readonly group = inject(SlMenuRadioGroup, { self: true });\n private readonly split = inject(SlSplitButton);\n\n constructor() {\n if (!this.split.remember()) {\n throw new Error('slSplitButtonChoices needs a slSplitButton with `remember`.');\n }\n\n effect(() => {\n this.group.value.set(this.split.resolvedValue());\n });\n\n const subscription = this.group.valueChangeRequest.subscribe((request) => {\n this.split.select(request.value, request.reason as SplitButtonValueReason, request.source);\n request.cancel();\n });\n inject(DestroyRef).onDestroy(() => subscription.unsubscribe());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slotted-angular-split-button.mjs","sources":["../../split-button/src/split-button-defaults.ts","../../split-button/src/split-button.ts","../../split-button/src/split-button-parts.ts","../../split-button/src/slotted-angular-split-button.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { ButtonSize, ButtonTone, ButtonVariant } from '@slotted/angular/button';\n\n/**\n * What a split button paints itself as here, before it states anything of\n * its own. Every axis is optional: an unset one falls through to `button`'s\n * own token, which is where an application that paints every action at once\n * already set it, and then to the contract's defaults.\n */\nexport interface SplitButtonDefaults {\n size?: ButtonSize | undefined;\n tone?: ButtonTone | undefined;\n variant?: ButtonVariant | undefined;\n}\n\nexport const SPLIT_BUTTON_DEFAULTS = new InjectionToken<SplitButtonDefaults>(\n 'slotted split button defaults',\n { providedIn: 'root', factory: (): SplitButtonDefaults => ({}) },\n);\n\n/**\n * An application decides once how its split buttons are painted rather than\n * repeating three inputs on every one. A split button that states an axis\n * itself still wins.\n */\nexport function provideSplitButtonDefaults(defaults: SplitButtonDefaults) {\n return { provide: SPLIT_BUTTON_DEFAULTS, useValue: defaults };\n}\n\nexport function injectSplitButtonDefaults(): SplitButtonDefaults {\n return inject(SPLIT_BUTTON_DEFAULTS);\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n HostAttributeToken,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { WritableSignal } from '@angular/core';\nimport { BUTTON_DEFAULTS_TOKEN } from '@slotted/angular/button';\nimport type {\n ButtonDefaults,\n ButtonSize,\n ButtonTone,\n ButtonVariant,\n} from '@slotted/angular/button';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nimport { injectSplitButtonDefaults } from './split-button-defaults';\n\n/**\n * Why the remembered value moved. The menu's radio group produces exactly\n * these two, and the family surfaces them unchanged.\n */\nexport type SplitButtonValueReason = 'pointer' | 'keyboard';\n\n/**\n * The three axes the root hands down to both halves, through the button\n * family's own defaults token rather than through a second channel of this\n * family's invention — the mechanism `button-group` uses, and the reason an\n * explicit input on a half still wins. Getters, so a half's `computed` tracks\n * the root's signals.\n */\nfunction provideHalvesPaint() {\n return {\n provide: BUTTON_DEFAULTS_TOKEN,\n useFactory: (): ButtonDefaults => {\n const root = inject(SlSplitButton);\n return {\n get size() {\n return root.resolvedSize();\n },\n get tone() {\n return root.resolvedTone();\n },\n get variant() {\n return root.resolvedVariant();\n },\n };\n },\n };\n}\n\n/**\n * An action and the menu of its alternatives, joined into one shape.\n *\n * The root is a `group` of two `button`s: the primary, `SlButton` carrying\n * this family's part, and the menu trigger, `SlIconButton` carrying the\n * other and hosting `slMenuTriggerFor`. Each keeps its role, its state and\n * its own tab stop — every surveyed split button gives the pair two — and\n * the root hands them one appearance through `button`'s own token. The menu\n * is the consumer's own `sl-menu`, written inside the root, and nothing of\n * it is restated here.\n *\n * `remember` is the one decision the family adds. Off, the alternatives are\n * actions. On, the radio group carrying `slSplitButtonChoices` is bound to\n * the root's value, and the consumer renders the primary's label from that\n * value — the merge button whose strategy a repository remembers. A silent\n * update was refused because it changes what the next click does.\n */\n@Component({\n selector: '[slSplitButton]',\n standalone: true,\n exportAs: 'slSplitButton',\n template: '<ng-content></ng-content>',\n styleUrl: '../../../styles/src/split-button/split-button.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [provideHalvesPaint()],\n host: {\n 'data-ui': 'split-button',\n 'data-part': 'root',\n '[attr.role]': 'role',\n '[attr.data-tone]': 'resolvedTone()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-full-width]': 'fullWidth() ? \"\" : null',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-loading]': 'loading() ? \"\" : null',\n },\n})\nexport class SlSplitButton {\n readonly size = input<ButtonSize | undefined>(undefined);\n readonly tone = input<ButtonTone | undefined>(undefined);\n readonly variant = input<ButtonVariant | undefined>(undefined);\n /** The action takes the line; the menu trigger stays square. */\n readonly fullWidth = input(false, { transform: booleanAttribute });\n /** Takes both halves out. Each half keeps the native attribute for itself. */\n readonly disabled = input(false, { transform: booleanAttribute });\n /**\n * The action is in flight: the primary shows `button`'s indicator with its\n * width and name held, and the menu trigger is `aria-disabled` for the\n * duration — still in the tab sequence, still named, still painted — so a\n * second alternative cannot be chosen while the first runs.\n */\n readonly loading = input(false, { transform: booleanAttribute });\n /**\n * The choice in the menu becomes the action. Off, the menu's items are\n * actions; on, the items inside the radio group carrying\n * `slSplitButtonChoices` are bound to `value`.\n */\n readonly remember = input(false, { transform: booleanAttribute });\n\n /** The remembered value. Present at all puts it in controlled mode. */\n readonly value = input<string | undefined>(undefined);\n /** The value an uncontrolled split button remembers first, read once. */\n readonly defaultValue = input<string | undefined>(undefined);\n /**\n * One output for one transition, carrying the value, the value it\n * replaces, the reason, the originating event and `cancel()`.\n */\n readonly valueChange = output<ChangeRequest<string>>();\n\n private readonly defaults = injectSplitButtonDefaults();\n private readonly inherited = inject(BUTTON_DEFAULTS_TOKEN, { skipSelf: true });\n /**\n * A static attribute the consumer wrote survives the host binding, so a\n * root that is already inside a named group can give the role up with\n * `role=\"\"`, the way `button-group` lets it.\n */\n private readonly writtenRole = inject(new HostAttributeToken('role'), { optional: true });\n protected readonly role = this.writtenRole === '' ? null : (this.writtenRole ?? 'group');\n\n private readonly own: WritableSignal<string | undefined> = signal(undefined);\n\n /* Resolution: the input, the family's defaults, `button`'s defaults, then\n the contract's. */\n readonly resolvedSize = computed(\n () => this.size() ?? this.defaults.size ?? this.inherited.size ?? 'md',\n );\n readonly resolvedTone = computed(\n () => this.tone() ?? this.defaults.tone ?? this.inherited.tone ?? 'accent',\n );\n readonly resolvedVariant = computed(\n () => this.variant() ?? this.defaults.variant ?? this.inherited.variant ?? 'solid',\n );\n /** The remembered value, under `remember`; nothing otherwise. */\n readonly resolvedValue = computed(() =>\n this.remember() ? (this.value() ?? this.own() ?? this.defaultValue()) : undefined,\n );\n\n /** Asks the family to remember one alternative as the action. */\n select(next: string, reason: SplitButtonValueReason, source?: unknown): boolean {\n const state = createControllable<string>({\n controlled: this.value(),\n initial: this.resolvedValue() ?? '',\n onRequest: (request) => this.valueChange.emit(request),\n });\n const accepted = state.request(next, reason, source);\n if (accepted) this.own.set(next);\n return accepted;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport {\n blockActivation,\n BUTTON_WAIT,\n resolveInertness,\n resolveLoadingIndicator,\n SlButton,\n SlIconButton,\n} from '@slotted/angular/button';\nimport { SlMenuRadioGroup, SlMenuTrigger } from '@slotted/angular/menu';\n\nimport { SlSplitButton } from './split-button';\nimport type { SplitButtonValueReason } from './split-button';\n\n/**\n * The action: `SlButton`, carrying this family's part and folding the root's\n * `disabled` and `loading` into its own. The subclass restates the template\n * and the host binding for the part, and overrides the two resolvers the\n * parent reads its state through — everything else, from `slButtonStart` to\n * the indicator, is `SlButton`'s. `button` selects itself by `data-ui` alone\n * and reads no part on its root, so the part slot is free.\n */\n@Component({\n selector: 'button[slSplitButtonPrimary]',\n standalone: true,\n template: `<ng-content select=\"[slButtonStart]\"></ng-content\n ><span data-part=\"label\"><ng-content></ng-content></span\n ><ng-content select=\"[slButtonEnd]\"></ng-content>\n @if (waiting() && !hasVisualSlot()) {\n <span\n data-part=\"indicator\"\n data-ui=\"spinner\"\n role=\"progressbar\"\n [attr.aria-label]=\"t('loading')\"\n ></span>\n }`,\n styleUrls: [\n '../../../styles/src/button/button.css',\n '../../../styles/src/spinner/spinner.css',\n '../../../styles/src/split-button/split-button.css',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slSplitButtonPrimary',\n providers: [{ provide: BUTTON_WAIT, useExisting: forwardRef(() => SlSplitButtonPrimary) }],\n host: {\n '[attr.data-part]': '\"primary\"',\n '[attr.data-disabled]': 'stateAttribute(resolvedDisabled())',\n '[attr.data-loading]': 'stateAttribute(resolvedLoading())',\n },\n})\nexport class SlSplitButtonPrimary extends SlButton {\n private readonly split = inject(SlSplitButton);\n\n readonly resolvedDisabled = computed(() => this.disabled() || this.split.disabled());\n readonly resolvedLoading = computed(() => this.loading() || this.split.loading());\n\n protected override readonly inert = resolveInertness({\n disabled: this.resolvedDisabled,\n focusableWhenDisabled: this.focusableWhenDisabled,\n loading: this.resolvedLoading,\n });\n override readonly waiting = resolveLoadingIndicator(this.resolvedLoading, this.loadingDelay);\n}\n\n/**\n * The keys of the Menu Button pattern, which `slMenuTriggerFor` answers on\n * this element and which a busy trigger has to refuse before it does.\n */\nconst OPENING_KEYS = new Set(['ArrowDown', 'ArrowUp', 'Enter', ' ']);\n\n/**\n * The menu trigger: `SlIconButton` hosting `slMenuTriggerFor` and carrying\n * this family's part. It takes `aria-haspopup`, `aria-expanded`,\n * `aria-controls` and the four keys of the Menu Button pattern from `menu`,\n * and every tone, variant and size from `button`. The chevron is the\n * family's, the `chevron-down` Glyph element in the icon part, which `button`\n * sizes; content the consumer writes replaces it; the accessible name is the consumer's, and `SlIconButton`\n * refuses to render without one in development.\n *\n * `slMenuTriggerFor` is a host directive rather than a second attribute the\n * consumer writes beside this one, and the order is the point: a host\n * directive's bindings run before the host's, so the `data-part` and the\n * `data-disabled` this component binds win over the `null` the trigger\n * binds for a control that is neither a bar's item nor a submenu's. The\n * write-back `toolbar`'s overflow needs is not needed here.\n *\n * While the root is loading the trigger is busy: `aria-disabled`, still in\n * the tab sequence, still named, still painted — no `data-disabled`, so\n * `button` does not paint it unavailable beside an action still in its\n * tone. The click is refused in the capture phase by `button`'s own guard,\n * and the opening keys are refused the same way here, before the trigger's\n * own listener sees them.\n */\n@Component({\n selector: 'button[slSplitButtonMenuTrigger]',\n standalone: true,\n imports: [SlGlyph, SlIcon],\n /* The chevron is drawn unless the consumer wrote content of their own. */\n template: `<span data-part=\"icon\"\n ><ng-content\n ><span slIcon><svg slGlyph name=\"chevron-down\"></svg></span\n ></ng-content>\n @if (waiting()) {\n <span\n data-part=\"indicator\"\n data-ui=\"spinner\"\n role=\"progressbar\"\n [attr.aria-label]=\"t('loading')\"\n ></span>\n }\n </span>`,\n styleUrls: [\n '../../../styles/src/button/button.css',\n '../../../styles/src/spinner/spinner.css',\n '../../../styles/src/split-button/split-button.css',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slSplitButtonMenuTrigger',\n hostDirectives: [{ directive: SlMenuTrigger, inputs: ['slMenuTriggerFor'] }],\n host: {\n '[attr.data-part]': '\"menu-trigger\"',\n '[attr.data-disabled]': 'stateAttribute(resolvedDisabled())',\n '[attr.aria-disabled]': 'inert.ariaDisabled()',\n '[disabled]': 'inert.nativelyDisabled()',\n },\n})\nexport class SlSplitButtonMenuTrigger extends SlIconButton {\n private readonly split = inject(SlSplitButton);\n\n readonly resolvedDisabled = computed(() => this.disabled() || this.split.disabled());\n /** The action is in flight and the menu waits with it. */\n readonly busy = computed(() => this.split.loading());\n\n protected override readonly inert = resolveInertness({\n disabled: this.resolvedDisabled,\n focusableWhenDisabled: this.focusableWhenDisabled,\n loading: this.busy,\n });\n\n constructor() {\n super();\n const element = inject(ElementRef<HTMLButtonElement>).nativeElement;\n const listener = (event: KeyboardEvent) => {\n if (this.busy() && OPENING_KEYS.has(event.key)) blockActivation(event);\n };\n element.addEventListener('keydown', listener, { capture: true });\n inject(DestroyRef).onDestroy(() =>\n element.removeEventListener('keydown', listener, { capture: true }),\n );\n }\n}\n\n/**\n * The alternatives under `remember`: the consumer's `sl-menu-radio-group`,\n * bound both ways to the root's value. The group never owns the value — its\n * own request is cancelled once forwarded, and what it shows checked is\n * written back from the root, so a controlled root the consumer has not yet\n * moved shows nothing the consumer did not agree to. The DI tree is the\n * template tree, so the group finds the root above it however the layer is\n * portaled.\n */\n@Directive({\n selector: 'sl-menu-radio-group[slSplitButtonChoices]',\n standalone: true,\n exportAs: 'slSplitButtonChoices',\n})\nexport class SlSplitButtonChoices {\n private readonly group = inject(SlMenuRadioGroup, { self: true });\n private readonly split = inject(SlSplitButton);\n\n constructor() {\n if (!this.split.remember()) {\n throw new Error('slSplitButtonChoices needs a slSplitButton with `remember`.');\n }\n\n effect(() => {\n this.group.value.set(this.split.resolvedValue());\n });\n\n const subscription = this.group.valueChangeRequest.subscribe((request) => {\n this.split.select(request.value, request.reason as SplitButtonValueReason, request.source);\n request.cancel();\n });\n inject(DestroyRef).onDestroy(() => subscription.unsubscribe());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -122,7 +122,7 @@ class SlStatCard {
122
122
  labelledBy = computed(() => this.ownLabel !== null ? null : (this.ownLabelledBy ?? this.labelId), /* @ts-ignore */
123
123
  ...(ngDevMode ? [{ debugName: "labelledBy" }] : /* istanbul ignore next */ []));
124
124
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlStatCard, deps: [], target: i0.ɵɵFactoryTarget.Component });
125
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlStatCard, isStandalone: true, selector: "[slStatCard]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, fill: { classPropertyName: "fill", publicName: "fill", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, goodWhen: { classPropertyName: "goodWhen", publicName: "goodWhen", isSignal: true, isRequired: false, transformFunction: null }, delta: { classPropertyName: "delta", publicName: "delta", isSignal: true, isRequired: false, transformFunction: null }, tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, formatOptions: { classPropertyName: "formatOptions", publicName: "formatOptions", isSignal: true, isRequired: false, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "stat-card", "data-part": "root", "role": "group" }, properties: { "attr.aria-labelledby": "labelledBy()", "attr.aria-busy": "loading() ? \"true\" : null", "attr.data-size": "resolvedSize()", "attr.data-fill": "resolvedFill()", "attr.data-layout": "resolvedLayout()", "attr.data-status": "status()", "attr.data-good-when": "resolvedGoodWhen()", "attr.data-tone": "resolvedTone() ?? null", "attr.data-loading": "loading() ? \"\" : null" } }, exportAs: ["slStatCard"], ngImport: i0, template: '<div data-part="body"><ng-content /></div>', isInline: true, styles: ["@layer slotted.components{[data-ui=stat-card]{--_edge-width: var(--slotted-stat-card-border-width, var(--slotted-border-width-thin, 1px));--_radius: var(--slotted-stat-card-radius, var(--slotted-radius-lg, 8px));--_inset-block: var(--slotted-stat-card-padding-block, var(--slotted-space-6, 1rem));--_inset-inline: var(--slotted-stat-card-padding-inline, var(--slotted-space-6, 1rem));--_region-gap: var(--slotted-stat-card-region-gap, var(--slotted-space-3, .375rem));--_trend-gap: var(--slotted-stat-card-trend-gap, var(--slotted-space-6, 1rem));--_trend-size: var( --slotted-stat-card-trend-inline-size, calc(var(--slotted-space-12, 4rem) * 1.5) );--_surface: var(--slotted-stat-card-background, var(--slotted-surface-raised, Canvas));--_edge: var(--slotted-stat-card-border-color, var(--slotted-border-subtle, ButtonBorder));--_shadow: var(--slotted-stat-card-shadow, none);--_ink: var(--slotted-stat-card-color, var(--slotted-text, CanvasText));--_ink-muted: var(--slotted-stat-card-color-muted, var(--slotted-text-muted, GrayText));--_value-size: var(--slotted-stat-card-value-font-size, var(--slotted-font-size-3xl, 1.5rem));--_value-line: var(--slotted-stat-card-value-line-height, var(--slotted-line-height-3xl, 1.3));--_label-size: var(--slotted-stat-card-label-font-size, var(--slotted-font-size-sm, .8125rem));--_label-line: var(--slotted-stat-card-label-line-height, var(--slotted-line-height-sm, 1.45));--_delta-size: var(--slotted-stat-card-delta-font-size, var(--slotted-font-size-sm, .8125rem));--_prose-size: var(--slotted-stat-card-prose-font-size, var(--slotted-font-size-xs, .75rem));--_prose-line: var(--slotted-stat-card-prose-line-height, var(--slotted-line-height-xs, 1.4));--_indicator-size: var( --slotted-stat-card-indicator-size, var(--slotted-control-icon-size-sm, 14px) );--_value-size-narrow: var(--slotted-font-size-2xl, 1.25rem);--_value-line-narrow: var(--slotted-line-height-2xl, 1.4);--_tone-text: var(--_ink-muted);background-color:var(--_surface);border:none;border-radius:var(--_radius);box-shadow:var(--_shadow);box-sizing:border-box;color:var(--_ink);container-name:stat-card;container-type:inline-size;display:flex;flex-direction:column;font-family:var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);min-inline-size:var( --slotted-stat-card-min-inline-size, calc(var(--slotted-space-12, 4rem) * 2.5) );padding-block:var(--_inset-block);padding-inline:var(--_inset-inline);position:relative}[data-ui=stat-card]:before{border:var(--_edge-width) solid var(--_edge);border-radius:inherit;content:\"\";inset:0;pointer-events:none;position:absolute}[data-ui=stat-card][data-size=sm]{--_inset-block: var(--slotted-stat-card-padding-block-sm, var(--slotted-space-5, .75rem));--_inset-inline: var(--slotted-stat-card-padding-inline-sm, var(--slotted-space-5, .75rem));--_region-gap: var(--slotted-stat-card-region-gap-sm, var(--slotted-space-2, .25rem));--_trend-gap: var(--slotted-stat-card-trend-gap-sm, var(--slotted-space-5, .75rem));--_trend-size: var(--slotted-stat-card-trend-inline-size-sm, var(--slotted-space-12, 4rem));--_value-size: var( --slotted-stat-card-value-font-size-sm, var(--slotted-font-size-2xl, 1.25rem) );--_value-line: var( --slotted-stat-card-value-line-height-sm, var(--slotted-line-height-2xl, 1.4) );--_label-size: var( --slotted-stat-card-label-font-size-sm, var(--slotted-font-size-xs, .75rem) );--_label-line: var( --slotted-stat-card-label-line-height-sm, var(--slotted-line-height-xs, 1.4) );--_delta-size: var( --slotted-stat-card-delta-font-size-sm, var(--slotted-font-size-xs, .75rem) );--_value-size-narrow: var(--slotted-font-size-xl, 1.125rem);--_value-line-narrow: var(--slotted-line-height-xl, 1.45)}[data-ui=stat-card][data-size=lg]{--_inset-block: var(--slotted-stat-card-padding-block-lg, var(--slotted-space-8, 1.5rem));--_inset-inline: var(--slotted-stat-card-padding-inline-lg, var(--slotted-space-8, 1.5rem));--_region-gap: var(--slotted-stat-card-region-gap-lg, var(--slotted-space-4, .5rem));--_trend-gap: var(--slotted-stat-card-trend-gap-lg, var(--slotted-space-8, 1.5rem));--_trend-size: var( --slotted-stat-card-trend-inline-size-lg, calc(var(--slotted-space-12, 4rem) * 2) );--_value-size: var(--slotted-stat-card-value-font-size-lg, var(--slotted-font-size-4xl, 2rem));--_value-line: var( --slotted-stat-card-value-line-height-lg, var(--slotted-line-height-4xl, 1.2) );--_label-size: var( --slotted-stat-card-label-font-size-lg, var(--slotted-font-size-md, .875rem) );--_label-line: var( --slotted-stat-card-label-line-height-lg, var(--slotted-line-height-md, 1.5) );--_delta-size: var( --slotted-stat-card-delta-font-size-lg, var(--slotted-font-size-md, .875rem) );--_prose-size: var( --slotted-stat-card-prose-font-size-lg, var(--slotted-font-size-sm, .8125rem) );--_prose-line: var( --slotted-stat-card-prose-line-height-lg, var(--slotted-line-height-sm, 1.45) );--_indicator-size: var( --slotted-stat-card-indicator-size-lg, var(--slotted-control-icon-size-md, 16px) );--_value-size-narrow: var(--slotted-font-size-3xl, 1.5rem);--_value-line-narrow: var(--slotted-line-height-3xl, 1.3)}[data-ui=stat-card][data-fill=elevated]{--_shadow: var(--slotted-stat-card-shadow-elevated, var(--slotted-shadow-md))}[data-ui=stat-card][data-fill=subtle]{--_surface: var(--slotted-stat-card-background-subtle, var(--slotted-surface-sunken, Canvas))}[data-ui=stat-card][data-fill=plain]{--_surface: transparent;--_edge: transparent;--_shadow: none;--_inset-block: 0;--_inset-inline: 0;--_radius: var(--slotted-radius-none, 0px)}[data-ui=stat-card] [data-part=body]{column-gap:var(--_trend-gap);display:grid;flex:1 1 auto;grid-template-areas:\"header header\" \"figure trend\" \"message message\";grid-template-columns:minmax(min-content,1fr) minmax(0,var(--_trend-size));grid-template-rows:auto minmax(0,1fr) auto;min-inline-size:0;row-gap:var(--_region-gap)}[data-ui=stat-card][data-layout=stacked] [data-part=body]{grid-template-areas:\"header\" \"figure\" \"trend\" \"message\";grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto auto}[data-ui=stat-card] [data-part=header]{contain:inline-size;grid-area:header}[data-ui=stat-card] [data-part=figure]{align-self:start;grid-area:figure;min-inline-size:0}[data-ui=stat-card] [data-part=trend]{--slotted-sparkline-ring-color: var(--_surface);align-self:center;container-name:stat-card-trend;container-type:inline-size;grid-area:trend;inline-size:100%;min-inline-size:0}@container stat-card-trend (max-width: 39px){[data-ui=stat-card] [data-part=trend]>*{visibility:hidden}}[data-ui=stat-card][data-layout=stacked] [data-part=trend]{align-self:end;margin-block-start:var(--slotted-space-2, .25rem)}[data-ui=stat-card] [data-part=message]{contain:inline-size;grid-area:message}@container stat-card (max-width: 219px){[data-ui=stat-card] [data-part=body]{grid-template-areas:\"header\" \"figure\" \"trend\" \"message\";grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto auto}[data-ui=stat-card] [data-part=trend]{align-self:end;margin-block-start:var(--slotted-space-2, .25rem)}[data-ui=stat-card] [data-part=value]{font-size:var(--_value-size-narrow);line-height:var(--_value-line-narrow)}[data-ui=stat-card][data-loading] [data-part=value]{min-block-size:calc(var(--_value-size-narrow) * var(--_value-line-narrow))}}[data-ui=stat-card] [data-part=header]{align-items:baseline;column-gap:var(--slotted-space-3, .375rem);display:flex;flex-wrap:wrap;min-inline-size:0;row-gap:var(--slotted-space-2, .25rem)}[data-ui=stat-card] [data-part=label]{color:var(--_ink-muted);flex:1 1 0%;font-size:var(--_label-size);font-weight:var(--slotted-font-weight-medium, 500);line-height:var(--_label-line);margin:0;min-inline-size:min(100%,10rem);overflow-wrap:break-word}[data-ui=stat-card] [data-part=status]{display:inline-flex;flex:none}[data-ui=stat-card] [data-part=action]{flex:none;font-size:var(--_label-size);line-height:var(--_label-line);margin-inline-start:auto}@media(pointer:coarse){[data-ui=stat-card] :is([data-part=action]:is(a,button),[data-part=action]>:is(a,button)){position:relative}[data-ui=stat-card] :is([data-part=action]:is(a,button),[data-part=action]>:is(a,button)):before{content:\"\";inset:min(0px,calc((100% - var(--slotted-target-comfortable, 44px)) / 2));position:absolute}}[data-ui=stat-card] [data-part=figure]{align-items:baseline;column-gap:var(--slotted-space-3, .375rem);display:flex;flex-wrap:wrap;row-gap:0}[data-ui=stat-card] [data-part=comparison]{contain:inline-size;flex:1 1 100%}[data-ui=stat-card] [data-part=value]{align-items:baseline;color:var(--_ink);display:inline-flex;flex-wrap:wrap;gap:.15em;font-size:var(--_value-size);font-variant-numeric:proportional-nums;font-weight:var(--slotted-font-weight-semibold, 600);letter-spacing:-.02em;unicode-bidi:plaintext;line-height:var(--_value-line);margin:0;min-inline-size:0;overflow-wrap:break-word}[data-ui=stat-card] [data-part=unit]{color:var(--_ink-muted);font-size:var(--_delta-size);font-weight:var(--slotted-font-weight-medium, 500);letter-spacing:0}[data-ui=stat-card] [data-part=delta]{align-items:center;color:var(--_tone-text);column-gap:var(--slotted-space-1, .125rem);display:inline-flex;font-size:var(--_delta-size);font-variant-numeric:tabular-nums;font-weight:var(--slotted-font-weight-semibold, 600);line-height:1;unicode-bidi:plaintext;white-space:nowrap}[data-ui=stat-card] [data-part=delta][data-tone=neutral]{--_tone-text: var(--_ink-muted)}[data-ui=stat-card] [data-part=delta][data-tone=accent]{--_tone-text: var(--slotted-tone-accent-text)}[data-ui=stat-card] [data-part=delta][data-tone=secondary]{--_tone-text: var(--slotted-tone-secondary-text)}[data-ui=stat-card] [data-part=delta][data-tone=success]{--_tone-text: var(--slotted-tone-success-text)}[data-ui=stat-card] [data-part=delta][data-tone=warning]{--_tone-text: var(--slotted-tone-warning-text)}[data-ui=stat-card] [data-part=delta][data-tone=danger]{--_tone-text: var(--slotted-tone-danger-text)}[data-ui=stat-card] [data-part=indicator]{--slotted-icon-size: var(--_indicator-size);display:inline-flex;flex:none}[data-ui=stat-card] [data-part=delta][data-trend=down] [data-part=indicator]>[data-ui=icon]{rotate:x 180deg}[data-ui=stat-card] [data-part=comparison]{color:var(--_ink-muted);font-size:var(--_prose-size);line-height:var(--_prose-line);margin-block-start:var(--_region-gap);margin:0;min-inline-size:0;overflow-wrap:anywhere}[data-ui=stat-card] [data-part=period]{color:var(--_ink-muted)}[data-ui=stat-card] [data-part=trend]{align-self:center;display:flex}[data-ui=stat-card][data-tone=success] [data-part=trend]{--slotted-sparkline-color: var(--slotted-tone-success-text)}[data-ui=stat-card][data-tone=danger] [data-part=trend]{--slotted-sparkline-color: var(--slotted-tone-danger-text)}[data-ui=stat-card][data-tone=warning] [data-part=trend]{--slotted-sparkline-color: var(--slotted-tone-warning-text)}[data-ui=stat-card][data-tone=accent] [data-part=trend]{--slotted-sparkline-color: var(--slotted-tone-accent-text)}[data-ui=stat-card][data-tone=secondary] [data-part=trend]{--slotted-sparkline-color: var(--slotted-tone-secondary-text)}[data-ui=stat-card][data-fill=plain] [data-part=trend]{--slotted-sparkline-ring-color: var(--slotted-surface-raised, Canvas)}[data-ui=stat-card] [data-part=message]{color:var(--_ink-muted);font-size:var(--_prose-size);line-height:var(--_prose-line);margin:0;min-inline-size:0;overflow-wrap:anywhere}[data-ui=stat-card][data-status=error] [data-part=message]{color:var(--slotted-tone-danger-text)}[data-ui=stat-card][data-status=empty] [data-part=value],[data-ui=stat-card][data-status=error] [data-part=value]{color:var(--_ink-muted)}[data-ui=stat-card][data-loading] [data-part=value]{min-block-size:calc(var(--_value-size) * var(--_value-line))}[data-ui=stat-card][data-loading] [data-part=trend]{--slotted-skeleton-block-size: var( --slotted-sparkline-block-size, var(--slotted-space-9, 2rem) )}[data-ui=stat-card][data-loading][data-size=sm] [data-part=trend]{--slotted-skeleton-block-size: var( --slotted-sparkline-block-size-sm, var(--slotted-space-7, 1.25rem) )}[data-ui=stat-card][data-loading][data-size=lg] [data-part=trend]{--slotted-skeleton-block-size: var( --slotted-sparkline-block-size-lg, var(--slotted-space-11, 3rem) )}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
125
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlStatCard, isStandalone: true, selector: "[slStatCard]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, fill: { classPropertyName: "fill", publicName: "fill", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, goodWhen: { classPropertyName: "goodWhen", publicName: "goodWhen", isSignal: true, isRequired: false, transformFunction: null }, delta: { classPropertyName: "delta", publicName: "delta", isSignal: true, isRequired: false, transformFunction: null }, tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, formatOptions: { classPropertyName: "formatOptions", publicName: "formatOptions", isSignal: true, isRequired: false, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "stat-card", "data-part": "root", "role": "group" }, properties: { "attr.aria-labelledby": "labelledBy()", "attr.aria-busy": "loading() ? \"true\" : null", "attr.data-size": "resolvedSize()", "attr.data-fill": "resolvedFill()", "attr.data-layout": "resolvedLayout()", "attr.data-status": "status()", "attr.data-good-when": "resolvedGoodWhen()", "attr.data-tone": "resolvedTone() ?? null", "attr.data-loading": "loading() ? \"\" : null" } }, exportAs: ["slStatCard"], ngImport: i0, template: '<div data-part="body"><ng-content /></div>', isInline: true, styles: ["@layer slotted.components{[data-ui=stat-card]{--_edge-width: var(--slotted-stat-card-border-width, var(--slotted-border-width-thin, 1px));--_radius: var(--slotted-stat-card-radius, var(--slotted-radius-lg, 8px));--_inset-block: var(--slotted-stat-card-padding-block, var(--slotted-space-6, 1rem));--_inset-inline: var(--slotted-stat-card-padding-inline, var(--slotted-space-6, 1rem));--_region-gap: var(--slotted-stat-card-region-gap, var(--slotted-space-3, .375rem));--_trend-gap: var(--slotted-stat-card-trend-gap, var(--slotted-space-6, 1rem));--_trend-size: var( --slotted-stat-card-trend-inline-size, calc(var(--slotted-space-12, 4rem) * 1.5) );--_surface: var(--slotted-stat-card-background, var(--slotted-surface-raised, Canvas));--_edge: var(--slotted-stat-card-border-color, var(--slotted-border-subtle, ButtonBorder));--_shadow: var(--slotted-stat-card-shadow, none);--_ink: var(--slotted-stat-card-color, var(--slotted-text, CanvasText));--_ink-muted: var(--slotted-stat-card-color-muted, var(--slotted-text-muted, GrayText));--_value-size: var(--slotted-stat-card-value-font-size, var(--slotted-font-size-3xl, 1.5rem));--_value-line: var(--slotted-stat-card-value-line-height, var(--slotted-line-height-3xl, 1.3));--_label-size: var(--slotted-stat-card-label-font-size, var(--slotted-font-size-sm, .8125rem));--_label-line: var(--slotted-stat-card-label-line-height, var(--slotted-line-height-sm, 1.45));--_delta-size: var(--slotted-stat-card-delta-font-size, var(--slotted-font-size-sm, .8125rem));--_prose-size: var(--slotted-stat-card-prose-font-size, var(--slotted-font-size-xs, .75rem));--_prose-line: var(--slotted-stat-card-prose-line-height, var(--slotted-line-height-xs, 1.4));--_indicator-size: var( --slotted-stat-card-indicator-size, var(--slotted-control-icon-size-sm, 14px) );--_value-size-narrow: var(--slotted-font-size-2xl, 1.25rem);--_value-line-narrow: var(--slotted-line-height-2xl, 1.4);--_tone-text: var(--_ink-muted);background-color:var(--_surface);border:none;border-radius:var(--_radius);box-shadow:var(--_shadow);box-sizing:border-box;color:var(--_ink);container-name:stat-card;container-type:inline-size;display:flex;flex-direction:column;font-family:var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);min-inline-size:var( --slotted-stat-card-min-inline-size, calc(var(--slotted-space-12, 4rem) * 2.5) );padding-block:var(--_inset-block);padding-inline:var(--_inset-inline);position:relative}[data-ui=stat-card]:before{border:var(--_edge-width) solid var(--_edge);border-radius:inherit;content:\"\";inset:0;pointer-events:none;position:absolute}[data-ui=stat-card][data-size=sm]{--_inset-block: var(--slotted-stat-card-padding-block-sm, var(--slotted-space-5, .75rem));--_inset-inline: var(--slotted-stat-card-padding-inline-sm, var(--slotted-space-5, .75rem));--_region-gap: var(--slotted-stat-card-region-gap-sm, var(--slotted-space-2, .25rem));--_trend-gap: var(--slotted-stat-card-trend-gap-sm, var(--slotted-space-5, .75rem));--_trend-size: var(--slotted-stat-card-trend-inline-size-sm, var(--slotted-space-12, 4rem));--_value-size: var( --slotted-stat-card-value-font-size-sm, var(--slotted-font-size-2xl, 1.25rem) );--_value-line: var( --slotted-stat-card-value-line-height-sm, var(--slotted-line-height-2xl, 1.4) );--_label-size: var( --slotted-stat-card-label-font-size-sm, var(--slotted-font-size-xs, .75rem) );--_label-line: var( --slotted-stat-card-label-line-height-sm, var(--slotted-line-height-xs, 1.4) );--_delta-size: var( --slotted-stat-card-delta-font-size-sm, var(--slotted-font-size-xs, .75rem) );--_value-size-narrow: var(--slotted-font-size-xl, 1.125rem);--_value-line-narrow: var(--slotted-line-height-xl, 1.45)}[data-ui=stat-card][data-size=lg]{--_inset-block: var(--slotted-stat-card-padding-block-lg, var(--slotted-space-8, 1.5rem));--_inset-inline: var(--slotted-stat-card-padding-inline-lg, var(--slotted-space-8, 1.5rem));--_region-gap: var(--slotted-stat-card-region-gap-lg, var(--slotted-space-4, .5rem));--_trend-gap: var(--slotted-stat-card-trend-gap-lg, var(--slotted-space-8, 1.5rem));--_trend-size: var( --slotted-stat-card-trend-inline-size-lg, calc(var(--slotted-space-12, 4rem) * 2) );--_value-size: var(--slotted-stat-card-value-font-size-lg, var(--slotted-font-size-4xl, 2rem));--_value-line: var( --slotted-stat-card-value-line-height-lg, var(--slotted-line-height-4xl, 1.2) );--_label-size: var( --slotted-stat-card-label-font-size-lg, var(--slotted-font-size-md, .875rem) );--_label-line: var( --slotted-stat-card-label-line-height-lg, var(--slotted-line-height-md, 1.5) );--_delta-size: var( --slotted-stat-card-delta-font-size-lg, var(--slotted-font-size-md, .875rem) );--_prose-size: var( --slotted-stat-card-prose-font-size-lg, var(--slotted-font-size-sm, .8125rem) );--_prose-line: var( --slotted-stat-card-prose-line-height-lg, var(--slotted-line-height-sm, 1.45) );--_indicator-size: var( --slotted-stat-card-indicator-size-lg, var(--slotted-control-icon-size-md, 16px) );--_value-size-narrow: var(--slotted-font-size-3xl, 1.5rem);--_value-line-narrow: var(--slotted-line-height-3xl, 1.3)}[data-ui=stat-card][data-fill=elevated]{--_shadow: var(--slotted-stat-card-shadow-elevated, var(--slotted-shadow-md))}[data-ui=stat-card][data-fill=subtle]{--_surface: var(--slotted-stat-card-background-subtle, var(--slotted-surface-sunken, Canvas))}[data-ui=stat-card][data-fill=plain]{--_surface: transparent;--_edge: transparent;--_shadow: none;--_inset-block: 0;--_inset-inline: 0;--_radius: var(--slotted-radius-none, 0px)}[data-ui=stat-card] [data-part=body]{column-gap:var(--_trend-gap);display:grid;flex:1 1 auto;grid-template-areas:\"header header\" \"figure trend\" \"message message\";grid-template-columns:minmax(min-content,1fr) minmax(0,var(--_trend-size));grid-template-rows:auto minmax(0,1fr) auto;min-inline-size:0;row-gap:var(--_region-gap)}[data-ui=stat-card][data-layout=stacked] [data-part=body]{grid-template-areas:\"header\" \"figure\" \"trend\" \"message\";grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto auto}[data-ui=stat-card] [data-part=header]{contain:inline-size;grid-area:header}[data-ui=stat-card] [data-part=figure]{align-self:start;grid-area:figure;min-inline-size:0}[data-ui=stat-card] [data-part=trend]{--slotted-sparkline-ring-color: var(--_surface);align-self:center;container-name:stat-card-trend;container-type:inline-size;grid-area:trend;inline-size:100%;min-inline-size:0}@container stat-card-trend (max-width: 39px){[data-ui=stat-card] [data-part=trend]>*{visibility:hidden}}[data-ui=stat-card][data-layout=stacked] [data-part=trend]{align-self:end;margin-block-start:var(--slotted-space-2, .25rem)}[data-ui=stat-card] [data-part=message]{contain:inline-size;grid-area:message}@container stat-card (max-width: 219px){[data-ui=stat-card] [data-part=body]{grid-template-areas:\"header\" \"figure\" \"trend\" \"message\";grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto auto}[data-ui=stat-card] [data-part=trend]{align-self:end;margin-block-start:var(--slotted-space-2, .25rem)}[data-ui=stat-card] [data-part=value]{font-size:var(--_value-size-narrow);line-height:var(--_value-line-narrow)}[data-ui=stat-card][data-loading] [data-part=value]{min-block-size:calc(var(--_value-size-narrow) * var(--_value-line-narrow))}}[data-ui=stat-card] [data-part=header]{align-items:baseline;column-gap:var(--slotted-space-3, .375rem);display:flex;flex-wrap:wrap;min-inline-size:0;row-gap:var(--slotted-space-2, .25rem)}[data-ui=stat-card] [data-part=label]{color:var(--_ink-muted);flex:1 1 0%;font-size:var(--_label-size);font-weight:var(--slotted-font-weight-medium, 500);line-height:var(--_label-line);margin:0;min-inline-size:min(100%,10rem);overflow-wrap:break-word}[data-ui=stat-card] [data-part=status]{display:inline-flex;flex:none}[data-ui=stat-card] [data-part=action]{flex:none;font-size:var(--_label-size);line-height:var(--_label-line);margin-inline-start:auto}@media(pointer:coarse){[data-ui=stat-card] :is([data-part=action]:is(a,button),[data-part=action]>:is(a,button)){position:relative}[data-ui=stat-card] :is([data-part=action]:is(a,button),[data-part=action]>:is(a,button)):before{content:\"\";inset:min(0px,calc((100% - var(--slotted-target-comfortable, 44px)) / 2));position:absolute}}[data-ui=stat-card] [data-part=figure]{align-items:baseline;column-gap:var(--slotted-space-3, .375rem);display:flex;flex-wrap:wrap;row-gap:0}[data-ui=stat-card] [data-part=comparison]{contain:inline-size;flex:1 1 100%}[data-ui=stat-card] [data-part=value]{align-items:baseline;color:var(--_ink);display:inline-flex;flex-wrap:wrap;gap:.15em;font-size:var(--_value-size);font-variant-numeric:proportional-nums;font-weight:var(--slotted-font-weight-semibold, 600);letter-spacing:var(--slotted-letter-spacing-tighter, -.03em);unicode-bidi:plaintext;line-height:var(--_value-line);margin:0;min-inline-size:0;overflow-wrap:break-word}[data-ui=stat-card] [data-part=unit]{color:var(--_ink-muted);font-size:var(--_delta-size);font-weight:var(--slotted-font-weight-medium, 500);letter-spacing:0}[data-ui=stat-card] [data-part=delta]{align-items:center;color:var(--_tone-text);column-gap:var(--slotted-space-1, .125rem);display:inline-flex;font-size:var(--_delta-size);font-variant-numeric:tabular-nums;font-weight:var(--slotted-font-weight-semibold, 600);line-height:1;unicode-bidi:plaintext;white-space:nowrap}[data-ui=stat-card] [data-part=delta][data-tone=neutral]{--_tone-text: var(--_ink-muted)}[data-ui=stat-card] [data-part=delta][data-tone=accent]{--_tone-text: var(--slotted-tone-accent-text)}[data-ui=stat-card] [data-part=delta][data-tone=secondary]{--_tone-text: var(--slotted-tone-secondary-text)}[data-ui=stat-card] [data-part=delta][data-tone=success]{--_tone-text: var(--slotted-tone-success-text)}[data-ui=stat-card] [data-part=delta][data-tone=warning]{--_tone-text: var(--slotted-tone-warning-text)}[data-ui=stat-card] [data-part=delta][data-tone=danger]{--_tone-text: var(--slotted-tone-danger-text)}[data-ui=stat-card] [data-part=indicator]{--slotted-icon-size: var(--_indicator-size);display:inline-flex;flex:none}[data-ui=stat-card] [data-part=delta][data-trend=down] [data-part=indicator]>[data-ui=icon]{rotate:x 180deg}[data-ui=stat-card] [data-part=comparison]{color:var(--_ink-muted);font-size:var(--_prose-size);line-height:var(--_prose-line);margin-block-start:var(--_region-gap);margin:0;min-inline-size:0;overflow-wrap:anywhere}[data-ui=stat-card] [data-part=period]{color:var(--_ink-muted)}[data-ui=stat-card] [data-part=trend]{align-self:center;display:flex}[data-ui=stat-card][data-tone=success] [data-part=trend]{--slotted-sparkline-color: var(--slotted-tone-success-text)}[data-ui=stat-card][data-tone=danger] [data-part=trend]{--slotted-sparkline-color: var(--slotted-tone-danger-text)}[data-ui=stat-card][data-tone=warning] [data-part=trend]{--slotted-sparkline-color: var(--slotted-tone-warning-text)}[data-ui=stat-card][data-tone=accent] [data-part=trend]{--slotted-sparkline-color: var(--slotted-tone-accent-text)}[data-ui=stat-card][data-tone=secondary] [data-part=trend]{--slotted-sparkline-color: var(--slotted-tone-secondary-text)}[data-ui=stat-card][data-fill=plain] [data-part=trend]{--slotted-sparkline-ring-color: var(--slotted-surface-raised, Canvas)}[data-ui=stat-card] [data-part=message]{color:var(--_ink-muted);font-size:var(--_prose-size);line-height:var(--_prose-line);margin:0;min-inline-size:0;overflow-wrap:anywhere}[data-ui=stat-card][data-status=error] [data-part=message]{color:var(--slotted-tone-danger-text)}[data-ui=stat-card][data-status=empty] [data-part=value],[data-ui=stat-card][data-status=error] [data-part=value]{color:var(--_ink-muted)}[data-ui=stat-card][data-loading] [data-part=value]{min-block-size:calc(var(--_value-size) * var(--_value-line))}[data-ui=stat-card][data-loading] [data-part=trend]{--slotted-skeleton-block-size: var( --slotted-sparkline-block-size, var(--slotted-space-9, 2rem) )}[data-ui=stat-card][data-loading][data-size=sm] [data-part=trend]{--slotted-skeleton-block-size: var( --slotted-sparkline-block-size-sm, var(--slotted-space-7, 1.25rem) )}[data-ui=stat-card][data-loading][data-size=lg] [data-part=trend]{--slotted-skeleton-block-size: var( --slotted-sparkline-block-size-lg, var(--slotted-space-11, 3rem) )}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
126
126
  }
127
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlStatCard, decorators: [{
128
128
  type: Component,
@@ -139,7 +139,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
139
139
  '[attr.data-good-when]': 'resolvedGoodWhen()',
140
140
  '[attr.data-tone]': 'resolvedTone() ?? null',
141
141
  '[attr.data-loading]': 'loading() ? "" : null',
142
- }, styles: ["@layer slotted.components{[data-ui=stat-card]{--_edge-width: var(--slotted-stat-card-border-width, var(--slotted-border-width-thin, 1px));--_radius: var(--slotted-stat-card-radius, var(--slotted-radius-lg, 8px));--_inset-block: var(--slotted-stat-card-padding-block, var(--slotted-space-6, 1rem));--_inset-inline: var(--slotted-stat-card-padding-inline, var(--slotted-space-6, 1rem));--_region-gap: var(--slotted-stat-card-region-gap, var(--slotted-space-3, .375rem));--_trend-gap: var(--slotted-stat-card-trend-gap, var(--slotted-space-6, 1rem));--_trend-size: var( --slotted-stat-card-trend-inline-size, calc(var(--slotted-space-12, 4rem) * 1.5) );--_surface: var(--slotted-stat-card-background, var(--slotted-surface-raised, Canvas));--_edge: var(--slotted-stat-card-border-color, var(--slotted-border-subtle, ButtonBorder));--_shadow: var(--slotted-stat-card-shadow, none);--_ink: var(--slotted-stat-card-color, var(--slotted-text, CanvasText));--_ink-muted: var(--slotted-stat-card-color-muted, var(--slotted-text-muted, GrayText));--_value-size: var(--slotted-stat-card-value-font-size, var(--slotted-font-size-3xl, 1.5rem));--_value-line: var(--slotted-stat-card-value-line-height, var(--slotted-line-height-3xl, 1.3));--_label-size: var(--slotted-stat-card-label-font-size, var(--slotted-font-size-sm, .8125rem));--_label-line: var(--slotted-stat-card-label-line-height, var(--slotted-line-height-sm, 1.45));--_delta-size: var(--slotted-stat-card-delta-font-size, var(--slotted-font-size-sm, .8125rem));--_prose-size: var(--slotted-stat-card-prose-font-size, var(--slotted-font-size-xs, .75rem));--_prose-line: var(--slotted-stat-card-prose-line-height, var(--slotted-line-height-xs, 1.4));--_indicator-size: var( --slotted-stat-card-indicator-size, var(--slotted-control-icon-size-sm, 14px) );--_value-size-narrow: var(--slotted-font-size-2xl, 1.25rem);--_value-line-narrow: var(--slotted-line-height-2xl, 1.4);--_tone-text: var(--_ink-muted);background-color:var(--_surface);border:none;border-radius:var(--_radius);box-shadow:var(--_shadow);box-sizing:border-box;color:var(--_ink);container-name:stat-card;container-type:inline-size;display:flex;flex-direction:column;font-family:var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);min-inline-size:var( --slotted-stat-card-min-inline-size, calc(var(--slotted-space-12, 4rem) * 2.5) );padding-block:var(--_inset-block);padding-inline:var(--_inset-inline);position:relative}[data-ui=stat-card]:before{border:var(--_edge-width) solid var(--_edge);border-radius:inherit;content:\"\";inset:0;pointer-events:none;position:absolute}[data-ui=stat-card][data-size=sm]{--_inset-block: var(--slotted-stat-card-padding-block-sm, var(--slotted-space-5, .75rem));--_inset-inline: var(--slotted-stat-card-padding-inline-sm, var(--slotted-space-5, .75rem));--_region-gap: var(--slotted-stat-card-region-gap-sm, var(--slotted-space-2, .25rem));--_trend-gap: var(--slotted-stat-card-trend-gap-sm, var(--slotted-space-5, .75rem));--_trend-size: var(--slotted-stat-card-trend-inline-size-sm, var(--slotted-space-12, 4rem));--_value-size: var( --slotted-stat-card-value-font-size-sm, var(--slotted-font-size-2xl, 1.25rem) );--_value-line: var( --slotted-stat-card-value-line-height-sm, var(--slotted-line-height-2xl, 1.4) );--_label-size: var( --slotted-stat-card-label-font-size-sm, var(--slotted-font-size-xs, .75rem) );--_label-line: var( --slotted-stat-card-label-line-height-sm, var(--slotted-line-height-xs, 1.4) );--_delta-size: var( --slotted-stat-card-delta-font-size-sm, var(--slotted-font-size-xs, .75rem) );--_value-size-narrow: var(--slotted-font-size-xl, 1.125rem);--_value-line-narrow: var(--slotted-line-height-xl, 1.45)}[data-ui=stat-card][data-size=lg]{--_inset-block: var(--slotted-stat-card-padding-block-lg, var(--slotted-space-8, 1.5rem));--_inset-inline: var(--slotted-stat-card-padding-inline-lg, var(--slotted-space-8, 1.5rem));--_region-gap: var(--slotted-stat-card-region-gap-lg, var(--slotted-space-4, .5rem));--_trend-gap: var(--slotted-stat-card-trend-gap-lg, var(--slotted-space-8, 1.5rem));--_trend-size: var( --slotted-stat-card-trend-inline-size-lg, calc(var(--slotted-space-12, 4rem) * 2) );--_value-size: var(--slotted-stat-card-value-font-size-lg, var(--slotted-font-size-4xl, 2rem));--_value-line: var( --slotted-stat-card-value-line-height-lg, var(--slotted-line-height-4xl, 1.2) );--_label-size: var( --slotted-stat-card-label-font-size-lg, var(--slotted-font-size-md, .875rem) );--_label-line: var( --slotted-stat-card-label-line-height-lg, var(--slotted-line-height-md, 1.5) );--_delta-size: var( --slotted-stat-card-delta-font-size-lg, var(--slotted-font-size-md, .875rem) );--_prose-size: var( --slotted-stat-card-prose-font-size-lg, var(--slotted-font-size-sm, .8125rem) );--_prose-line: var( --slotted-stat-card-prose-line-height-lg, var(--slotted-line-height-sm, 1.45) );--_indicator-size: var( --slotted-stat-card-indicator-size-lg, var(--slotted-control-icon-size-md, 16px) );--_value-size-narrow: var(--slotted-font-size-3xl, 1.5rem);--_value-line-narrow: var(--slotted-line-height-3xl, 1.3)}[data-ui=stat-card][data-fill=elevated]{--_shadow: var(--slotted-stat-card-shadow-elevated, var(--slotted-shadow-md))}[data-ui=stat-card][data-fill=subtle]{--_surface: var(--slotted-stat-card-background-subtle, var(--slotted-surface-sunken, Canvas))}[data-ui=stat-card][data-fill=plain]{--_surface: transparent;--_edge: transparent;--_shadow: none;--_inset-block: 0;--_inset-inline: 0;--_radius: var(--slotted-radius-none, 0px)}[data-ui=stat-card] [data-part=body]{column-gap:var(--_trend-gap);display:grid;flex:1 1 auto;grid-template-areas:\"header header\" \"figure trend\" \"message message\";grid-template-columns:minmax(min-content,1fr) minmax(0,var(--_trend-size));grid-template-rows:auto minmax(0,1fr) auto;min-inline-size:0;row-gap:var(--_region-gap)}[data-ui=stat-card][data-layout=stacked] [data-part=body]{grid-template-areas:\"header\" \"figure\" \"trend\" \"message\";grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto auto}[data-ui=stat-card] [data-part=header]{contain:inline-size;grid-area:header}[data-ui=stat-card] [data-part=figure]{align-self:start;grid-area:figure;min-inline-size:0}[data-ui=stat-card] [data-part=trend]{--slotted-sparkline-ring-color: var(--_surface);align-self:center;container-name:stat-card-trend;container-type:inline-size;grid-area:trend;inline-size:100%;min-inline-size:0}@container stat-card-trend (max-width: 39px){[data-ui=stat-card] [data-part=trend]>*{visibility:hidden}}[data-ui=stat-card][data-layout=stacked] [data-part=trend]{align-self:end;margin-block-start:var(--slotted-space-2, .25rem)}[data-ui=stat-card] [data-part=message]{contain:inline-size;grid-area:message}@container stat-card (max-width: 219px){[data-ui=stat-card] [data-part=body]{grid-template-areas:\"header\" \"figure\" \"trend\" \"message\";grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto auto}[data-ui=stat-card] [data-part=trend]{align-self:end;margin-block-start:var(--slotted-space-2, .25rem)}[data-ui=stat-card] [data-part=value]{font-size:var(--_value-size-narrow);line-height:var(--_value-line-narrow)}[data-ui=stat-card][data-loading] [data-part=value]{min-block-size:calc(var(--_value-size-narrow) * var(--_value-line-narrow))}}[data-ui=stat-card] [data-part=header]{align-items:baseline;column-gap:var(--slotted-space-3, .375rem);display:flex;flex-wrap:wrap;min-inline-size:0;row-gap:var(--slotted-space-2, .25rem)}[data-ui=stat-card] [data-part=label]{color:var(--_ink-muted);flex:1 1 0%;font-size:var(--_label-size);font-weight:var(--slotted-font-weight-medium, 500);line-height:var(--_label-line);margin:0;min-inline-size:min(100%,10rem);overflow-wrap:break-word}[data-ui=stat-card] [data-part=status]{display:inline-flex;flex:none}[data-ui=stat-card] [data-part=action]{flex:none;font-size:var(--_label-size);line-height:var(--_label-line);margin-inline-start:auto}@media(pointer:coarse){[data-ui=stat-card] :is([data-part=action]:is(a,button),[data-part=action]>:is(a,button)){position:relative}[data-ui=stat-card] :is([data-part=action]:is(a,button),[data-part=action]>:is(a,button)):before{content:\"\";inset:min(0px,calc((100% - var(--slotted-target-comfortable, 44px)) / 2));position:absolute}}[data-ui=stat-card] [data-part=figure]{align-items:baseline;column-gap:var(--slotted-space-3, .375rem);display:flex;flex-wrap:wrap;row-gap:0}[data-ui=stat-card] [data-part=comparison]{contain:inline-size;flex:1 1 100%}[data-ui=stat-card] [data-part=value]{align-items:baseline;color:var(--_ink);display:inline-flex;flex-wrap:wrap;gap:.15em;font-size:var(--_value-size);font-variant-numeric:proportional-nums;font-weight:var(--slotted-font-weight-semibold, 600);letter-spacing:-.02em;unicode-bidi:plaintext;line-height:var(--_value-line);margin:0;min-inline-size:0;overflow-wrap:break-word}[data-ui=stat-card] [data-part=unit]{color:var(--_ink-muted);font-size:var(--_delta-size);font-weight:var(--slotted-font-weight-medium, 500);letter-spacing:0}[data-ui=stat-card] [data-part=delta]{align-items:center;color:var(--_tone-text);column-gap:var(--slotted-space-1, .125rem);display:inline-flex;font-size:var(--_delta-size);font-variant-numeric:tabular-nums;font-weight:var(--slotted-font-weight-semibold, 600);line-height:1;unicode-bidi:plaintext;white-space:nowrap}[data-ui=stat-card] [data-part=delta][data-tone=neutral]{--_tone-text: var(--_ink-muted)}[data-ui=stat-card] [data-part=delta][data-tone=accent]{--_tone-text: var(--slotted-tone-accent-text)}[data-ui=stat-card] [data-part=delta][data-tone=secondary]{--_tone-text: var(--slotted-tone-secondary-text)}[data-ui=stat-card] [data-part=delta][data-tone=success]{--_tone-text: var(--slotted-tone-success-text)}[data-ui=stat-card] [data-part=delta][data-tone=warning]{--_tone-text: var(--slotted-tone-warning-text)}[data-ui=stat-card] [data-part=delta][data-tone=danger]{--_tone-text: var(--slotted-tone-danger-text)}[data-ui=stat-card] [data-part=indicator]{--slotted-icon-size: var(--_indicator-size);display:inline-flex;flex:none}[data-ui=stat-card] [data-part=delta][data-trend=down] [data-part=indicator]>[data-ui=icon]{rotate:x 180deg}[data-ui=stat-card] [data-part=comparison]{color:var(--_ink-muted);font-size:var(--_prose-size);line-height:var(--_prose-line);margin-block-start:var(--_region-gap);margin:0;min-inline-size:0;overflow-wrap:anywhere}[data-ui=stat-card] [data-part=period]{color:var(--_ink-muted)}[data-ui=stat-card] [data-part=trend]{align-self:center;display:flex}[data-ui=stat-card][data-tone=success] [data-part=trend]{--slotted-sparkline-color: var(--slotted-tone-success-text)}[data-ui=stat-card][data-tone=danger] [data-part=trend]{--slotted-sparkline-color: var(--slotted-tone-danger-text)}[data-ui=stat-card][data-tone=warning] [data-part=trend]{--slotted-sparkline-color: var(--slotted-tone-warning-text)}[data-ui=stat-card][data-tone=accent] [data-part=trend]{--slotted-sparkline-color: var(--slotted-tone-accent-text)}[data-ui=stat-card][data-tone=secondary] [data-part=trend]{--slotted-sparkline-color: var(--slotted-tone-secondary-text)}[data-ui=stat-card][data-fill=plain] [data-part=trend]{--slotted-sparkline-ring-color: var(--slotted-surface-raised, Canvas)}[data-ui=stat-card] [data-part=message]{color:var(--_ink-muted);font-size:var(--_prose-size);line-height:var(--_prose-line);margin:0;min-inline-size:0;overflow-wrap:anywhere}[data-ui=stat-card][data-status=error] [data-part=message]{color:var(--slotted-tone-danger-text)}[data-ui=stat-card][data-status=empty] [data-part=value],[data-ui=stat-card][data-status=error] [data-part=value]{color:var(--_ink-muted)}[data-ui=stat-card][data-loading] [data-part=value]{min-block-size:calc(var(--_value-size) * var(--_value-line))}[data-ui=stat-card][data-loading] [data-part=trend]{--slotted-skeleton-block-size: var( --slotted-sparkline-block-size, var(--slotted-space-9, 2rem) )}[data-ui=stat-card][data-loading][data-size=sm] [data-part=trend]{--slotted-skeleton-block-size: var( --slotted-sparkline-block-size-sm, var(--slotted-space-7, 1.25rem) )}[data-ui=stat-card][data-loading][data-size=lg] [data-part=trend]{--slotted-skeleton-block-size: var( --slotted-sparkline-block-size-lg, var(--slotted-space-11, 3rem) )}}\n"] }]
142
+ }, styles: ["@layer slotted.components{[data-ui=stat-card]{--_edge-width: var(--slotted-stat-card-border-width, var(--slotted-border-width-thin, 1px));--_radius: var(--slotted-stat-card-radius, var(--slotted-radius-lg, 8px));--_inset-block: var(--slotted-stat-card-padding-block, var(--slotted-space-6, 1rem));--_inset-inline: var(--slotted-stat-card-padding-inline, var(--slotted-space-6, 1rem));--_region-gap: var(--slotted-stat-card-region-gap, var(--slotted-space-3, .375rem));--_trend-gap: var(--slotted-stat-card-trend-gap, var(--slotted-space-6, 1rem));--_trend-size: var( --slotted-stat-card-trend-inline-size, calc(var(--slotted-space-12, 4rem) * 1.5) );--_surface: var(--slotted-stat-card-background, var(--slotted-surface-raised, Canvas));--_edge: var(--slotted-stat-card-border-color, var(--slotted-border-subtle, ButtonBorder));--_shadow: var(--slotted-stat-card-shadow, none);--_ink: var(--slotted-stat-card-color, var(--slotted-text, CanvasText));--_ink-muted: var(--slotted-stat-card-color-muted, var(--slotted-text-muted, GrayText));--_value-size: var(--slotted-stat-card-value-font-size, var(--slotted-font-size-3xl, 1.5rem));--_value-line: var(--slotted-stat-card-value-line-height, var(--slotted-line-height-3xl, 1.3));--_label-size: var(--slotted-stat-card-label-font-size, var(--slotted-font-size-sm, .8125rem));--_label-line: var(--slotted-stat-card-label-line-height, var(--slotted-line-height-sm, 1.45));--_delta-size: var(--slotted-stat-card-delta-font-size, var(--slotted-font-size-sm, .8125rem));--_prose-size: var(--slotted-stat-card-prose-font-size, var(--slotted-font-size-xs, .75rem));--_prose-line: var(--slotted-stat-card-prose-line-height, var(--slotted-line-height-xs, 1.4));--_indicator-size: var( --slotted-stat-card-indicator-size, var(--slotted-control-icon-size-sm, 14px) );--_value-size-narrow: var(--slotted-font-size-2xl, 1.25rem);--_value-line-narrow: var(--slotted-line-height-2xl, 1.4);--_tone-text: var(--_ink-muted);background-color:var(--_surface);border:none;border-radius:var(--_radius);box-shadow:var(--_shadow);box-sizing:border-box;color:var(--_ink);container-name:stat-card;container-type:inline-size;display:flex;flex-direction:column;font-family:var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);min-inline-size:var( --slotted-stat-card-min-inline-size, calc(var(--slotted-space-12, 4rem) * 2.5) );padding-block:var(--_inset-block);padding-inline:var(--_inset-inline);position:relative}[data-ui=stat-card]:before{border:var(--_edge-width) solid var(--_edge);border-radius:inherit;content:\"\";inset:0;pointer-events:none;position:absolute}[data-ui=stat-card][data-size=sm]{--_inset-block: var(--slotted-stat-card-padding-block-sm, var(--slotted-space-5, .75rem));--_inset-inline: var(--slotted-stat-card-padding-inline-sm, var(--slotted-space-5, .75rem));--_region-gap: var(--slotted-stat-card-region-gap-sm, var(--slotted-space-2, .25rem));--_trend-gap: var(--slotted-stat-card-trend-gap-sm, var(--slotted-space-5, .75rem));--_trend-size: var(--slotted-stat-card-trend-inline-size-sm, var(--slotted-space-12, 4rem));--_value-size: var( --slotted-stat-card-value-font-size-sm, var(--slotted-font-size-2xl, 1.25rem) );--_value-line: var( --slotted-stat-card-value-line-height-sm, var(--slotted-line-height-2xl, 1.4) );--_label-size: var( --slotted-stat-card-label-font-size-sm, var(--slotted-font-size-xs, .75rem) );--_label-line: var( --slotted-stat-card-label-line-height-sm, var(--slotted-line-height-xs, 1.4) );--_delta-size: var( --slotted-stat-card-delta-font-size-sm, var(--slotted-font-size-xs, .75rem) );--_value-size-narrow: var(--slotted-font-size-xl, 1.125rem);--_value-line-narrow: var(--slotted-line-height-xl, 1.45)}[data-ui=stat-card][data-size=lg]{--_inset-block: var(--slotted-stat-card-padding-block-lg, var(--slotted-space-8, 1.5rem));--_inset-inline: var(--slotted-stat-card-padding-inline-lg, var(--slotted-space-8, 1.5rem));--_region-gap: var(--slotted-stat-card-region-gap-lg, var(--slotted-space-4, .5rem));--_trend-gap: var(--slotted-stat-card-trend-gap-lg, var(--slotted-space-8, 1.5rem));--_trend-size: var( --slotted-stat-card-trend-inline-size-lg, calc(var(--slotted-space-12, 4rem) * 2) );--_value-size: var(--slotted-stat-card-value-font-size-lg, var(--slotted-font-size-4xl, 2rem));--_value-line: var( --slotted-stat-card-value-line-height-lg, var(--slotted-line-height-4xl, 1.2) );--_label-size: var( --slotted-stat-card-label-font-size-lg, var(--slotted-font-size-md, .875rem) );--_label-line: var( --slotted-stat-card-label-line-height-lg, var(--slotted-line-height-md, 1.5) );--_delta-size: var( --slotted-stat-card-delta-font-size-lg, var(--slotted-font-size-md, .875rem) );--_prose-size: var( --slotted-stat-card-prose-font-size-lg, var(--slotted-font-size-sm, .8125rem) );--_prose-line: var( --slotted-stat-card-prose-line-height-lg, var(--slotted-line-height-sm, 1.45) );--_indicator-size: var( --slotted-stat-card-indicator-size-lg, var(--slotted-control-icon-size-md, 16px) );--_value-size-narrow: var(--slotted-font-size-3xl, 1.5rem);--_value-line-narrow: var(--slotted-line-height-3xl, 1.3)}[data-ui=stat-card][data-fill=elevated]{--_shadow: var(--slotted-stat-card-shadow-elevated, var(--slotted-shadow-md))}[data-ui=stat-card][data-fill=subtle]{--_surface: var(--slotted-stat-card-background-subtle, var(--slotted-surface-sunken, Canvas))}[data-ui=stat-card][data-fill=plain]{--_surface: transparent;--_edge: transparent;--_shadow: none;--_inset-block: 0;--_inset-inline: 0;--_radius: var(--slotted-radius-none, 0px)}[data-ui=stat-card] [data-part=body]{column-gap:var(--_trend-gap);display:grid;flex:1 1 auto;grid-template-areas:\"header header\" \"figure trend\" \"message message\";grid-template-columns:minmax(min-content,1fr) minmax(0,var(--_trend-size));grid-template-rows:auto minmax(0,1fr) auto;min-inline-size:0;row-gap:var(--_region-gap)}[data-ui=stat-card][data-layout=stacked] [data-part=body]{grid-template-areas:\"header\" \"figure\" \"trend\" \"message\";grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto auto}[data-ui=stat-card] [data-part=header]{contain:inline-size;grid-area:header}[data-ui=stat-card] [data-part=figure]{align-self:start;grid-area:figure;min-inline-size:0}[data-ui=stat-card] [data-part=trend]{--slotted-sparkline-ring-color: var(--_surface);align-self:center;container-name:stat-card-trend;container-type:inline-size;grid-area:trend;inline-size:100%;min-inline-size:0}@container stat-card-trend (max-width: 39px){[data-ui=stat-card] [data-part=trend]>*{visibility:hidden}}[data-ui=stat-card][data-layout=stacked] [data-part=trend]{align-self:end;margin-block-start:var(--slotted-space-2, .25rem)}[data-ui=stat-card] [data-part=message]{contain:inline-size;grid-area:message}@container stat-card (max-width: 219px){[data-ui=stat-card] [data-part=body]{grid-template-areas:\"header\" \"figure\" \"trend\" \"message\";grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto auto}[data-ui=stat-card] [data-part=trend]{align-self:end;margin-block-start:var(--slotted-space-2, .25rem)}[data-ui=stat-card] [data-part=value]{font-size:var(--_value-size-narrow);line-height:var(--_value-line-narrow)}[data-ui=stat-card][data-loading] [data-part=value]{min-block-size:calc(var(--_value-size-narrow) * var(--_value-line-narrow))}}[data-ui=stat-card] [data-part=header]{align-items:baseline;column-gap:var(--slotted-space-3, .375rem);display:flex;flex-wrap:wrap;min-inline-size:0;row-gap:var(--slotted-space-2, .25rem)}[data-ui=stat-card] [data-part=label]{color:var(--_ink-muted);flex:1 1 0%;font-size:var(--_label-size);font-weight:var(--slotted-font-weight-medium, 500);line-height:var(--_label-line);margin:0;min-inline-size:min(100%,10rem);overflow-wrap:break-word}[data-ui=stat-card] [data-part=status]{display:inline-flex;flex:none}[data-ui=stat-card] [data-part=action]{flex:none;font-size:var(--_label-size);line-height:var(--_label-line);margin-inline-start:auto}@media(pointer:coarse){[data-ui=stat-card] :is([data-part=action]:is(a,button),[data-part=action]>:is(a,button)){position:relative}[data-ui=stat-card] :is([data-part=action]:is(a,button),[data-part=action]>:is(a,button)):before{content:\"\";inset:min(0px,calc((100% - var(--slotted-target-comfortable, 44px)) / 2));position:absolute}}[data-ui=stat-card] [data-part=figure]{align-items:baseline;column-gap:var(--slotted-space-3, .375rem);display:flex;flex-wrap:wrap;row-gap:0}[data-ui=stat-card] [data-part=comparison]{contain:inline-size;flex:1 1 100%}[data-ui=stat-card] [data-part=value]{align-items:baseline;color:var(--_ink);display:inline-flex;flex-wrap:wrap;gap:.15em;font-size:var(--_value-size);font-variant-numeric:proportional-nums;font-weight:var(--slotted-font-weight-semibold, 600);letter-spacing:var(--slotted-letter-spacing-tighter, -.03em);unicode-bidi:plaintext;line-height:var(--_value-line);margin:0;min-inline-size:0;overflow-wrap:break-word}[data-ui=stat-card] [data-part=unit]{color:var(--_ink-muted);font-size:var(--_delta-size);font-weight:var(--slotted-font-weight-medium, 500);letter-spacing:0}[data-ui=stat-card] [data-part=delta]{align-items:center;color:var(--_tone-text);column-gap:var(--slotted-space-1, .125rem);display:inline-flex;font-size:var(--_delta-size);font-variant-numeric:tabular-nums;font-weight:var(--slotted-font-weight-semibold, 600);line-height:1;unicode-bidi:plaintext;white-space:nowrap}[data-ui=stat-card] [data-part=delta][data-tone=neutral]{--_tone-text: var(--_ink-muted)}[data-ui=stat-card] [data-part=delta][data-tone=accent]{--_tone-text: var(--slotted-tone-accent-text)}[data-ui=stat-card] [data-part=delta][data-tone=secondary]{--_tone-text: var(--slotted-tone-secondary-text)}[data-ui=stat-card] [data-part=delta][data-tone=success]{--_tone-text: var(--slotted-tone-success-text)}[data-ui=stat-card] [data-part=delta][data-tone=warning]{--_tone-text: var(--slotted-tone-warning-text)}[data-ui=stat-card] [data-part=delta][data-tone=danger]{--_tone-text: var(--slotted-tone-danger-text)}[data-ui=stat-card] [data-part=indicator]{--slotted-icon-size: var(--_indicator-size);display:inline-flex;flex:none}[data-ui=stat-card] [data-part=delta][data-trend=down] [data-part=indicator]>[data-ui=icon]{rotate:x 180deg}[data-ui=stat-card] [data-part=comparison]{color:var(--_ink-muted);font-size:var(--_prose-size);line-height:var(--_prose-line);margin-block-start:var(--_region-gap);margin:0;min-inline-size:0;overflow-wrap:anywhere}[data-ui=stat-card] [data-part=period]{color:var(--_ink-muted)}[data-ui=stat-card] [data-part=trend]{align-self:center;display:flex}[data-ui=stat-card][data-tone=success] [data-part=trend]{--slotted-sparkline-color: var(--slotted-tone-success-text)}[data-ui=stat-card][data-tone=danger] [data-part=trend]{--slotted-sparkline-color: var(--slotted-tone-danger-text)}[data-ui=stat-card][data-tone=warning] [data-part=trend]{--slotted-sparkline-color: var(--slotted-tone-warning-text)}[data-ui=stat-card][data-tone=accent] [data-part=trend]{--slotted-sparkline-color: var(--slotted-tone-accent-text)}[data-ui=stat-card][data-tone=secondary] [data-part=trend]{--slotted-sparkline-color: var(--slotted-tone-secondary-text)}[data-ui=stat-card][data-fill=plain] [data-part=trend]{--slotted-sparkline-ring-color: var(--slotted-surface-raised, Canvas)}[data-ui=stat-card] [data-part=message]{color:var(--_ink-muted);font-size:var(--_prose-size);line-height:var(--_prose-line);margin:0;min-inline-size:0;overflow-wrap:anywhere}[data-ui=stat-card][data-status=error] [data-part=message]{color:var(--slotted-tone-danger-text)}[data-ui=stat-card][data-status=empty] [data-part=value],[data-ui=stat-card][data-status=error] [data-part=value]{color:var(--_ink-muted)}[data-ui=stat-card][data-loading] [data-part=value]{min-block-size:calc(var(--_value-size) * var(--_value-line))}[data-ui=stat-card][data-loading] [data-part=trend]{--slotted-skeleton-block-size: var( --slotted-sparkline-block-size, var(--slotted-space-9, 2rem) )}[data-ui=stat-card][data-loading][data-size=sm] [data-part=trend]{--slotted-skeleton-block-size: var( --slotted-sparkline-block-size-sm, var(--slotted-space-7, 1.25rem) )}[data-ui=stat-card][data-loading][data-size=lg] [data-part=trend]{--slotted-skeleton-block-size: var( --slotted-sparkline-block-size-lg, var(--slotted-space-11, 3rem) )}}\n"] }]
143
143
  }], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], fill: [{ type: i0.Input, args: [{ isSignal: true, alias: "fill", required: false }] }], layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], goodWhen: [{ type: i0.Input, args: [{ isSignal: true, alias: "goodWhen", required: false }] }], delta: [{ type: i0.Input, args: [{ isSignal: true, alias: "delta", required: false }] }], tone: [{ type: i0.Input, args: [{ isSignal: true, alias: "tone", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], formatOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatOptions", required: false }] }], messages: [{ type: i0.Input, args: [{ isSignal: true, alias: "messages", required: false }] }] } });
144
144
  function optionalNumber(value) {
145
145
  if (value === undefined || value === null || value === '')
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-stat-card.mjs","sources":["../../stat-card/src/stat-card-defaults.ts","../../stat-card/src/stat-card.constants.ts","../../stat-card/src/stat-card.ts","../../stat-card/src/stat-card-delta.ts","../../stat-card/src/stat-card-parts.ts","../../stat-card/src/stat-card-value.ts","../../stat-card/src/slotted-angular-stat-card.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\nimport type {\n StatCardFill,\n StatCardGoodWhen,\n StatCardLayout,\n StatCardSize,\n} from './stat-card.constants';\n\n/**\n * What every card in an application does before any of them states anything\n * of its own. `goodWhen` is here because a product usually has one answer —\n * a sales dashboard wants everything up, an operations one wants everything\n * down — and a card that disagrees says so.\n */\nexport interface StatCardDefaults {\n fill?: StatCardFill;\n formatOptions?: Intl.NumberFormatOptions;\n goodWhen?: StatCardGoodWhen;\n layout?: StatCardLayout;\n size?: StatCardSize;\n}\n\nexport const STAT_CARD_DEFAULTS_TOKEN = new InjectionToken<StatCardDefaults>(\n 'slotted stat-card defaults',\n { providedIn: 'root', factory: (): StatCardDefaults => ({}) },\n);\n\n/**\n * An explicit input is never overridden by the token. The words and the locale\n * come from the language in force (`provideSlotted`).\n */\nexport function provideStatCardDefaults(defaults: StatCardDefaults) {\n return { provide: STAT_CARD_DEFAULTS_TOKEN, useValue: defaults };\n}\n\nexport function injectStatCardDefaults(): StatCardDefaults {\n return inject(STAT_CARD_DEFAULTS_TOKEN);\n}\n","export type StatCardSize = 'sm' | 'md' | 'lg';\nexport type StatCardFill = 'outline' | 'elevated' | 'subtle' | 'plain';\nexport type StatCardLayout = 'inline' | 'stacked';\nexport type StatCardValueStatus = 'ready' | 'empty' | 'error';\nexport type StatCardGoodWhen = 'up' | 'down' | 'none';\nexport type StatCardTone = 'neutral' | 'accent' | 'secondary' | 'success' | 'warning' | 'danger';\nexport type StatCardDirection = 'up' | 'down' | 'flat';\nexport type StatCardDeltaFormat = 'percent' | 'decimal';\n\n/** The direction of a change, from its sign. */\nexport function trendOf(value: number | undefined): StatCardDirection {\n if (value === undefined || Number.isNaN(value) || value === 0) return 'flat';\n return value > 0 ? 'up' : 'down';\n}\n\n/**\n * The tone of a change, from what the metric means and never from the sign:\n * a rise is good when up is good and bad when down is; a fall is the reverse;\n * a flat change, or a metric with no valence, is neutral.\n */\nexport function toneOf(trend: StatCardDirection, goodWhen: StatCardGoodWhen): StatCardTone {\n if (trend === 'flat' || goodWhen === 'none') return 'neutral';\n return (trend === 'up') === (goodWhen === 'up') ? 'success' : 'danger';\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n HostAttributeToken,\n inject,\n input,\n numberAttribute,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { type PartialMessages, statCardMessages, type StatCardMessages } from '@slotted/core/i18n';\n\nimport { injectStatCardDefaults } from './stat-card-defaults';\nimport {\n toneOf,\n trendOf,\n type StatCardFill,\n type StatCardGoodWhen,\n type StatCardLayout,\n type StatCardSize,\n type StatCardTone,\n type StatCardValueStatus,\n} from './stat-card.constants';\n\nlet nextId = 0;\n\n/**\n * A metric with its name, its change and its trend, in a frame.\n *\n * The root holds the facts the parts read — which way is good, the change,\n * the status, whether it is loading — and derives the one thing two parts\n * have to agree on: the tone of the change, which the delta wears and the\n * trend hands to its sparkline. It is derived here, from `delta` and\n * `goodWhen`, so the first render already carries it.\n *\n * The root is a group named by its label, so a reader who lands on the\n * action inside it hears which metric it belongs to; an `aria-label` or\n * `aria-labelledby` the consumer wrote on the element wins. It carries\n * `aria-busy` while loading; the placeholders are `skeleton`s, and a\n * consumer who wants one announcement for a whole dashboard wraps it in a\n * `slSkeletonRegion`.\n */\n@Component({\n selector: '[slStatCard]',\n standalone: true,\n template: '<div data-part=\"body\"><ng-content /></div>',\n styleUrl: '../../../styles/src/stat-card/stat-card.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slStatCard',\n host: {\n 'data-ui': 'stat-card',\n 'data-part': 'root',\n role: 'group',\n '[attr.aria-labelledby]': 'labelledBy()',\n '[attr.aria-busy]': 'loading() ? \"true\" : null',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-fill]': 'resolvedFill()',\n '[attr.data-layout]': 'resolvedLayout()',\n '[attr.data-status]': 'status()',\n '[attr.data-good-when]': 'resolvedGoodWhen()',\n '[attr.data-tone]': 'resolvedTone() ?? null',\n '[attr.data-loading]': 'loading() ? \"\" : null',\n },\n})\nexport class SlStatCard {\n readonly size = input<StatCardSize | undefined>(undefined);\n readonly fill = input<StatCardFill | undefined>(undefined);\n readonly layout = input<StatCardLayout | undefined>(undefined);\n /** Whether there is a value to show, and if not, why. */\n readonly status = input<StatCardValueStatus>('ready');\n /** The value is still on its way: every part stands in with a placeholder. */\n readonly loading = input<boolean, unknown>(false, { transform: booleanAttribute });\n /** Which way is good for this metric. The delta's tone is derived from it, never from the sign. */\n readonly goodWhen = input<StatCardGoodWhen | undefined>(undefined);\n /**\n * The change since the comparison period, as the first delta inside reads\n * it: a fraction for a percentage (`0.124` is +12.4%), or a number.\n */\n readonly delta = input<number | undefined, unknown>(undefined, { transform: optionalNumber });\n /** The tone the card hands to its trend. Unset, it is the delta's. */\n readonly tone = input<StatCardTone | undefined>(undefined);\n /** The locale numbers are written in; the language in force when absent. */\n readonly locale = input<string | undefined>(undefined);\n /** How the value, the delta and the comparison read numbers. */\n readonly formatOptions = input<Intl.NumberFormatOptions | undefined>(undefined);\n /**\n * Words laid over the catalog of the language in force, key by key: what a\n * screen reader hears beside a change (`up`, `down`, `flat`, read before the\n * number because a sign is a glyph some readers skip) and what stands in for\n * a value that is not there (`empty`).\n */\n readonly messages = input<PartialMessages<StatCardMessages> | undefined>(undefined);\n\n private readonly defaults = injectStatCardDefaults();\n private readonly appLocale = injectLocale();\n private readonly ownLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly ownLabelledBy = inject(new HostAttributeToken('aria-labelledby'), {\n optional: true,\n });\n\n /** The id the label takes, and the root is named by. */\n readonly labelId = `slotted-stat-card-label-${nextId++}`;\n\n readonly resolvedSize = computed(() => this.size() ?? this.defaults.size ?? 'md');\n readonly resolvedFill = computed(() => this.fill() ?? this.defaults.fill ?? 'outline');\n readonly resolvedLayout = computed(() => this.layout() ?? this.defaults.layout ?? 'inline');\n readonly resolvedGoodWhen = computed(() => this.goodWhen() ?? this.defaults.goodWhen ?? 'up');\n readonly resolvedLocale = computed(() => this.locale() ?? this.appLocale());\n readonly resolvedFormatOptions = computed(\n () => this.formatOptions() ?? this.defaults.formatOptions,\n );\n /** The family's words in the language in force, with this card's `messages` laid over them. */\n readonly t = injectMessages(statCardMessages, this.messages);\n readonly resolvedTone = computed<StatCardTone | undefined>(() => {\n const explicit = this.tone();\n if (explicit !== undefined) return explicit;\n const delta = this.delta();\n return delta === undefined ? undefined : toneOf(trendOf(delta), this.resolvedGoodWhen());\n });\n\n readonly labelledBy = computed(() =>\n this.ownLabel !== null ? null : (this.ownLabelledBy ?? this.labelId),\n );\n}\n\nexport function optionalNumber(value: unknown): number | undefined {\n if (value === undefined || value === null || value === '') return undefined;\n return numberAttribute(value);\n}\n\nexport function optionalBoolean(value: unknown): boolean | undefined {\n return value === undefined ? undefined : booleanAttribute(value);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlSkeleton } from '@slotted/angular/skeleton';\nimport { SlVisuallyHidden } from '@slotted/angular/visually-hidden';\n\nimport { SlStatCard, optionalNumber } from './stat-card';\nimport {\n toneOf,\n trendOf,\n type StatCardDeltaFormat,\n type StatCardGoodWhen,\n type StatCardTone,\n} from './stat-card.constants';\n\n/**\n * The change, with the mark that says which way and the word a screen reader\n * hears before the number. `value` is the root's `delta` unless the part\n * states its own, so a second delta on one card — month over month beside\n * year over year — is one more part with one more value.\n *\n * `percent` reads the value as a fraction, which is what a division gives;\n * the sign is always shown except on nought. The tone is derived from the\n * direction and from `goodWhen`, never from the sign, and an explicit `tone`\n * wins.\n */\n@Component({\n selector: '[slStatCardDelta]',\n standalone: true,\n imports: [SlGlyph, SlIcon, SlSkeleton, SlVisuallyHidden],\n /* One glyph for a rise and a fall, turned over by the sheet for a fall. */\n template: `@if (card.loading()) {\n <span slSkeleton inlineSize=\"3.5em\"></span>\n } @else {\n <span data-part=\"indicator\" aria-hidden=\"true\"\n ><span slIcon [directional]=\"trend() !== 'flat'\"\n ><svg slGlyph [name]=\"trend() === 'flat' ? 'minus' : 'trending-up'\"></svg></span></span\n ><span slVisuallyHidden>{{ card.t(trend()) }} </span>{{ formatted() }}<ng-content />\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slStatCardDelta',\n host: {\n 'data-part': 'delta',\n '[attr.data-trend]': 'card.loading() ? \"flat\" : trend()',\n '[attr.data-tone]': 'card.loading() ? \"neutral\" : resolvedTone()',\n '[attr.hidden]': 'shown() ? null : \"\"',\n },\n})\nexport class SlStatCardDelta {\n /** The change. Unset, the root's `delta`. */\n readonly value = input<number | undefined, unknown>(undefined, { transform: optionalNumber });\n /** `percent` reads the value as a fraction; `decimal` reads it as it is. */\n readonly format = input<StatCardDeltaFormat>('percent');\n readonly formatOptions = input<Intl.NumberFormatOptions | undefined>(undefined);\n /** Unset, the root's. */\n readonly goodWhen = input<StatCardGoodWhen | undefined>(undefined);\n /** An explicit tone, which wins over the one derived from `goodWhen`. */\n readonly tone = input<StatCardTone | undefined>(undefined);\n\n protected readonly card = inject(SlStatCard);\n\n readonly change = computed(() => this.value() ?? this.card.delta());\n readonly trend = computed(() => trendOf(this.change()));\n readonly resolvedTone = computed(\n () => this.tone() ?? toneOf(this.trend(), this.goodWhen() ?? this.card.resolvedGoodWhen()),\n );\n readonly shown = computed(() => this.card.loading() || this.card.status() === 'ready');\n\n readonly formatted = computed(() => {\n const change = this.change();\n if (typeof change !== 'number') return '';\n return new Intl.NumberFormat(this.card.resolvedLocale(), {\n signDisplay: 'exceptZero',\n ...(this.format() === 'percent' ? { style: 'percent', maximumFractionDigits: 1 } : {}),\n ...this.card.resolvedFormatOptions(),\n ...this.formatOptions(),\n }).format(change);\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n HostAttributeToken,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlSkeleton } from '@slotted/angular/skeleton';\n\nimport { SlStatCard } from './stat-card';\n\n/** The row with the name, a status beside it and an action at the end. */\n@Directive({\n selector: '[slStatCardHeader]',\n standalone: true,\n exportAs: 'slStatCardHeader',\n host: { 'data-part': 'header' },\n})\nexport class SlStatCardHeader {}\n\n/**\n * The name of the metric. It is the element the root is named by, so it\n * carries the id the root points at; an `id` the consumer wrote wins, and\n * the root then names nothing, which is the consumer's decision to make.\n */\n@Directive({\n selector: '[slStatCardLabel]',\n standalone: true,\n exportAs: 'slStatCardLabel',\n host: { 'data-part': 'label', '[attr.id]': 'id' },\n})\nexport class SlStatCardLabel {\n private readonly card = inject(SlStatCard);\n private readonly ownId = inject(new HostAttributeToken('id'), { optional: true });\n readonly id = this.ownId ?? this.card.labelId;\n}\n\n/** A slot beside the name for a badge or a status indicator. */\n@Directive({\n selector: '[slStatCardStatus]',\n standalone: true,\n exportAs: 'slStatCardStatus',\n host: { 'data-part': 'status' },\n})\nexport class SlStatCardStatus {}\n\n/** The place at the end of the header for the consumer's link or button. */\n@Directive({\n selector: '[slStatCardAction]',\n standalone: true,\n exportAs: 'slStatCardAction',\n host: { 'data-part': 'action' },\n})\nexport class SlStatCardAction {}\n\n/** The value with its unit and its delta on one line, and the comparison under them. */\n@Directive({\n selector: '[slStatCardFigure]',\n standalone: true,\n exportAs: 'slStatCardFigure',\n host: { 'data-part': 'figure' },\n})\nexport class SlStatCardFigure {}\n\n/** The unit, wherever the consumer puts it inside the value: `$` before, `%` after. */\n@Directive({\n selector: '[slStatCardUnit]',\n standalone: true,\n exportAs: 'slStatCardUnit',\n host: { 'data-part': 'unit' },\n})\nexport class SlStatCardUnit {}\n\n@Directive({\n selector: '[slStatCardPeriod]',\n standalone: true,\n exportAs: 'slStatCardPeriod',\n host: { 'data-part': 'period' },\n})\nexport class SlStatCardPeriod {}\n\n/**\n * The prose under the figure: what the value was, and the period. Shown\n * only while there is a value to compare; a placeholder while loading.\n */\n@Component({\n selector: '[slStatCardComparison]',\n standalone: true,\n imports: [SlSkeleton],\n template: `@if (card.loading()) {\n <span slSkeleton inlineSize=\"10em\"></span>\n } @else {\n <ng-content />\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slStatCardComparison',\n host: { 'data-part': 'comparison', '[attr.hidden]': 'shown() ? null : \"\"' },\n})\nexport class SlStatCardComparison {\n protected readonly card = inject(SlStatCard);\n readonly shown = computed(() => this.card.loading() || this.card.status() === 'ready');\n}\n\n/**\n * Where a sparkline goes. The stylesheet hands it the card's tone and the\n * card's ground; while loading it holds a block the sparkline's height, so\n * the card does not change size when the line arrives.\n */\n@Component({\n selector: '[slStatCardTrend]',\n standalone: true,\n imports: [SlSkeleton],\n template: `@if (card.loading()) {\n <span slSkeleton shape=\"block\"></span>\n } @else {\n <ng-content />\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slStatCardTrend',\n host: { 'data-part': 'trend', '[attr.hidden]': 'shown() ? null : \"\"' },\n})\nexport class SlStatCardTrend {\n protected readonly card = inject(SlStatCard);\n readonly shown = computed(() => this.card.loading() || this.card.status() === 'ready');\n}\n\n/** What is said in place of a value that is missing or failed. Shown only then. */\n@Directive({\n selector: '[slStatCardMessage]',\n standalone: true,\n exportAs: 'slStatCardMessage',\n host: { 'data-part': 'message', '[attr.hidden]': 'shown() ? null : \"\"' },\n})\nexport class SlStatCardMessage {\n private readonly card = inject(SlStatCard);\n readonly shown = computed(() => !this.card.loading() && this.card.status() !== 'ready');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { inject } from '@angular/core';\nimport { SlSkeleton } from '@slotted/angular/skeleton';\n\nimport { SlStatCard } from './stat-card';\n\n/**\n * The number. A numeric `value` is formatted with the card's locale and\n * `formatOptions` — `notation: 'compact'` is how 12,900 becomes 12.9K — and\n * projected content is the consumer's own rendering, unit and all, after\n * it. A missing or failed value is the `empty` message, a dash; a loading\n * one is a placeholder five figures wide, on the value's own line.\n */\n@Component({\n selector: '[slStatCardValue]',\n standalone: true,\n imports: [SlSkeleton],\n template: `@if (card.loading()) {\n <span slSkeleton inlineSize=\"5ch\"></span>\n } @else if (card.status() !== 'ready') {\n {{ card.t('empty') }}\n } @else {\n {{ formatted() }}<ng-content />\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slStatCardValue',\n host: { 'data-part': 'value' },\n})\nexport class SlStatCardValue {\n /** A number, formatted with the card's locale and `formatOptions`; the text otherwise. */\n readonly value = input<number | string | undefined>(undefined);\n readonly formatOptions = input<Intl.NumberFormatOptions | undefined>(undefined);\n\n protected readonly card = inject(SlStatCard);\n\n readonly formatted = computed(() => {\n const value = this.value();\n if (typeof value !== 'number') return value ?? '';\n return new Intl.NumberFormat(\n this.card.resolvedLocale(),\n this.formatOptions() ?? this.card.resolvedFormatOptions(),\n ).format(value);\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slotted-angular-stat-card.mjs","sources":["../../stat-card/src/stat-card-defaults.ts","../../stat-card/src/stat-card.constants.ts","../../stat-card/src/stat-card.ts","../../stat-card/src/stat-card-delta.ts","../../stat-card/src/stat-card-parts.ts","../../stat-card/src/stat-card-value.ts","../../stat-card/src/slotted-angular-stat-card.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\nimport type {\n StatCardFill,\n StatCardGoodWhen,\n StatCardLayout,\n StatCardSize,\n} from './stat-card.constants';\n\n/**\n * What every card in an application does before any of them states anything\n * of its own. `goodWhen` is here because a product usually has one answer —\n * a sales dashboard wants everything up, an operations one wants everything\n * down — and a card that disagrees says so.\n */\nexport interface StatCardDefaults {\n fill?: StatCardFill;\n formatOptions?: Intl.NumberFormatOptions;\n goodWhen?: StatCardGoodWhen;\n layout?: StatCardLayout;\n size?: StatCardSize;\n}\n\nexport const STAT_CARD_DEFAULTS_TOKEN = new InjectionToken<StatCardDefaults>(\n 'slotted stat-card defaults',\n { providedIn: 'root', factory: (): StatCardDefaults => ({}) },\n);\n\n/**\n * An explicit input is never overridden by the token. The words and the locale\n * come from the language in force (`provideSlotted`).\n */\nexport function provideStatCardDefaults(defaults: StatCardDefaults) {\n return { provide: STAT_CARD_DEFAULTS_TOKEN, useValue: defaults };\n}\n\nexport function injectStatCardDefaults(): StatCardDefaults {\n return inject(STAT_CARD_DEFAULTS_TOKEN);\n}\n","export type StatCardSize = 'sm' | 'md' | 'lg';\nexport type StatCardFill = 'outline' | 'elevated' | 'subtle' | 'plain';\nexport type StatCardLayout = 'inline' | 'stacked';\nexport type StatCardValueStatus = 'ready' | 'empty' | 'error';\nexport type StatCardGoodWhen = 'up' | 'down' | 'none';\nexport type StatCardTone = 'neutral' | 'accent' | 'secondary' | 'success' | 'warning' | 'danger';\nexport type StatCardDirection = 'up' | 'down' | 'flat';\nexport type StatCardDeltaFormat = 'percent' | 'decimal';\n\n/** The direction of a change, from its sign. */\nexport function trendOf(value: number | undefined): StatCardDirection {\n if (value === undefined || Number.isNaN(value) || value === 0) return 'flat';\n return value > 0 ? 'up' : 'down';\n}\n\n/**\n * The tone of a change, from what the metric means and never from the sign:\n * a rise is good when up is good and bad when down is; a fall is the reverse;\n * a flat change, or a metric with no valence, is neutral.\n */\nexport function toneOf(trend: StatCardDirection, goodWhen: StatCardGoodWhen): StatCardTone {\n if (trend === 'flat' || goodWhen === 'none') return 'neutral';\n return (trend === 'up') === (goodWhen === 'up') ? 'success' : 'danger';\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n HostAttributeToken,\n inject,\n input,\n numberAttribute,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { type PartialMessages, statCardMessages, type StatCardMessages } from '@slotted/core/i18n';\n\nimport { injectStatCardDefaults } from './stat-card-defaults';\nimport {\n toneOf,\n trendOf,\n type StatCardFill,\n type StatCardGoodWhen,\n type StatCardLayout,\n type StatCardSize,\n type StatCardTone,\n type StatCardValueStatus,\n} from './stat-card.constants';\n\nlet nextId = 0;\n\n/**\n * A metric with its name, its change and its trend, in a frame.\n *\n * The root holds the facts the parts read — which way is good, the change,\n * the status, whether it is loading — and derives the one thing two parts\n * have to agree on: the tone of the change, which the delta wears and the\n * trend hands to its sparkline. It is derived here, from `delta` and\n * `goodWhen`, so the first render already carries it.\n *\n * The root is a group named by its label, so a reader who lands on the\n * action inside it hears which metric it belongs to; an `aria-label` or\n * `aria-labelledby` the consumer wrote on the element wins. It carries\n * `aria-busy` while loading; the placeholders are `skeleton`s, and a\n * consumer who wants one announcement for a whole dashboard wraps it in a\n * `slSkeletonRegion`.\n */\n@Component({\n selector: '[slStatCard]',\n standalone: true,\n template: '<div data-part=\"body\"><ng-content /></div>',\n styleUrl: '../../../styles/src/stat-card/stat-card.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slStatCard',\n host: {\n 'data-ui': 'stat-card',\n 'data-part': 'root',\n role: 'group',\n '[attr.aria-labelledby]': 'labelledBy()',\n '[attr.aria-busy]': 'loading() ? \"true\" : null',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-fill]': 'resolvedFill()',\n '[attr.data-layout]': 'resolvedLayout()',\n '[attr.data-status]': 'status()',\n '[attr.data-good-when]': 'resolvedGoodWhen()',\n '[attr.data-tone]': 'resolvedTone() ?? null',\n '[attr.data-loading]': 'loading() ? \"\" : null',\n },\n})\nexport class SlStatCard {\n readonly size = input<StatCardSize | undefined>(undefined);\n readonly fill = input<StatCardFill | undefined>(undefined);\n readonly layout = input<StatCardLayout | undefined>(undefined);\n /** Whether there is a value to show, and if not, why. */\n readonly status = input<StatCardValueStatus>('ready');\n /** The value is still on its way: every part stands in with a placeholder. */\n readonly loading = input<boolean, unknown>(false, { transform: booleanAttribute });\n /** Which way is good for this metric. The delta's tone is derived from it, never from the sign. */\n readonly goodWhen = input<StatCardGoodWhen | undefined>(undefined);\n /**\n * The change since the comparison period, as the first delta inside reads\n * it: a fraction for a percentage (`0.124` is +12.4%), or a number.\n */\n readonly delta = input<number | undefined, unknown>(undefined, { transform: optionalNumber });\n /** The tone the card hands to its trend. Unset, it is the delta's. */\n readonly tone = input<StatCardTone | undefined>(undefined);\n /** The locale numbers are written in; the language in force when absent. */\n readonly locale = input<string | undefined>(undefined);\n /** How the value, the delta and the comparison read numbers. */\n readonly formatOptions = input<Intl.NumberFormatOptions | undefined>(undefined);\n /**\n * Words laid over the catalog of the language in force, key by key: what a\n * screen reader hears beside a change (`up`, `down`, `flat`, read before the\n * number because a sign is a glyph some readers skip) and what stands in for\n * a value that is not there (`empty`).\n */\n readonly messages = input<PartialMessages<StatCardMessages> | undefined>(undefined);\n\n private readonly defaults = injectStatCardDefaults();\n private readonly appLocale = injectLocale();\n private readonly ownLabel = inject(new HostAttributeToken('aria-label'), { optional: true });\n private readonly ownLabelledBy = inject(new HostAttributeToken('aria-labelledby'), {\n optional: true,\n });\n\n /** The id the label takes, and the root is named by. */\n readonly labelId = `slotted-stat-card-label-${nextId++}`;\n\n readonly resolvedSize = computed(() => this.size() ?? this.defaults.size ?? 'md');\n readonly resolvedFill = computed(() => this.fill() ?? this.defaults.fill ?? 'outline');\n readonly resolvedLayout = computed(() => this.layout() ?? this.defaults.layout ?? 'inline');\n readonly resolvedGoodWhen = computed(() => this.goodWhen() ?? this.defaults.goodWhen ?? 'up');\n readonly resolvedLocale = computed(() => this.locale() ?? this.appLocale());\n readonly resolvedFormatOptions = computed(\n () => this.formatOptions() ?? this.defaults.formatOptions,\n );\n /** The family's words in the language in force, with this card's `messages` laid over them. */\n readonly t = injectMessages(statCardMessages, this.messages);\n readonly resolvedTone = computed<StatCardTone | undefined>(() => {\n const explicit = this.tone();\n if (explicit !== undefined) return explicit;\n const delta = this.delta();\n return delta === undefined ? undefined : toneOf(trendOf(delta), this.resolvedGoodWhen());\n });\n\n readonly labelledBy = computed(() =>\n this.ownLabel !== null ? null : (this.ownLabelledBy ?? this.labelId),\n );\n}\n\nexport function optionalNumber(value: unknown): number | undefined {\n if (value === undefined || value === null || value === '') return undefined;\n return numberAttribute(value);\n}\n\nexport function optionalBoolean(value: unknown): boolean | undefined {\n return value === undefined ? undefined : booleanAttribute(value);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { SlSkeleton } from '@slotted/angular/skeleton';\nimport { SlVisuallyHidden } from '@slotted/angular/visually-hidden';\n\nimport { SlStatCard, optionalNumber } from './stat-card';\nimport {\n toneOf,\n trendOf,\n type StatCardDeltaFormat,\n type StatCardGoodWhen,\n type StatCardTone,\n} from './stat-card.constants';\n\n/**\n * The change, with the mark that says which way and the word a screen reader\n * hears before the number. `value` is the root's `delta` unless the part\n * states its own, so a second delta on one card — month over month beside\n * year over year — is one more part with one more value.\n *\n * `percent` reads the value as a fraction, which is what a division gives;\n * the sign is always shown except on nought. The tone is derived from the\n * direction and from `goodWhen`, never from the sign, and an explicit `tone`\n * wins.\n */\n@Component({\n selector: '[slStatCardDelta]',\n standalone: true,\n imports: [SlGlyph, SlIcon, SlSkeleton, SlVisuallyHidden],\n /* One glyph for a rise and a fall, turned over by the sheet for a fall. */\n template: `@if (card.loading()) {\n <span slSkeleton inlineSize=\"3.5em\"></span>\n } @else {\n <span data-part=\"indicator\" aria-hidden=\"true\"\n ><span slIcon [directional]=\"trend() !== 'flat'\"\n ><svg slGlyph [name]=\"trend() === 'flat' ? 'minus' : 'trending-up'\"></svg></span></span\n ><span slVisuallyHidden>{{ card.t(trend()) }} </span>{{ formatted() }}<ng-content />\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slStatCardDelta',\n host: {\n 'data-part': 'delta',\n '[attr.data-trend]': 'card.loading() ? \"flat\" : trend()',\n '[attr.data-tone]': 'card.loading() ? \"neutral\" : resolvedTone()',\n '[attr.hidden]': 'shown() ? null : \"\"',\n },\n})\nexport class SlStatCardDelta {\n /** The change. Unset, the root's `delta`. */\n readonly value = input<number | undefined, unknown>(undefined, { transform: optionalNumber });\n /** `percent` reads the value as a fraction; `decimal` reads it as it is. */\n readonly format = input<StatCardDeltaFormat>('percent');\n readonly formatOptions = input<Intl.NumberFormatOptions | undefined>(undefined);\n /** Unset, the root's. */\n readonly goodWhen = input<StatCardGoodWhen | undefined>(undefined);\n /** An explicit tone, which wins over the one derived from `goodWhen`. */\n readonly tone = input<StatCardTone | undefined>(undefined);\n\n protected readonly card = inject(SlStatCard);\n\n readonly change = computed(() => this.value() ?? this.card.delta());\n readonly trend = computed(() => trendOf(this.change()));\n readonly resolvedTone = computed(\n () => this.tone() ?? toneOf(this.trend(), this.goodWhen() ?? this.card.resolvedGoodWhen()),\n );\n readonly shown = computed(() => this.card.loading() || this.card.status() === 'ready');\n\n readonly formatted = computed(() => {\n const change = this.change();\n if (typeof change !== 'number') return '';\n return new Intl.NumberFormat(this.card.resolvedLocale(), {\n signDisplay: 'exceptZero',\n ...(this.format() === 'percent' ? { style: 'percent', maximumFractionDigits: 1 } : {}),\n ...this.card.resolvedFormatOptions(),\n ...this.formatOptions(),\n }).format(change);\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n HostAttributeToken,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlSkeleton } from '@slotted/angular/skeleton';\n\nimport { SlStatCard } from './stat-card';\n\n/** The row with the name, a status beside it and an action at the end. */\n@Directive({\n selector: '[slStatCardHeader]',\n standalone: true,\n exportAs: 'slStatCardHeader',\n host: { 'data-part': 'header' },\n})\nexport class SlStatCardHeader {}\n\n/**\n * The name of the metric. It is the element the root is named by, so it\n * carries the id the root points at; an `id` the consumer wrote wins, and\n * the root then names nothing, which is the consumer's decision to make.\n */\n@Directive({\n selector: '[slStatCardLabel]',\n standalone: true,\n exportAs: 'slStatCardLabel',\n host: { 'data-part': 'label', '[attr.id]': 'id' },\n})\nexport class SlStatCardLabel {\n private readonly card = inject(SlStatCard);\n private readonly ownId = inject(new HostAttributeToken('id'), { optional: true });\n readonly id = this.ownId ?? this.card.labelId;\n}\n\n/** A slot beside the name for a badge or a status indicator. */\n@Directive({\n selector: '[slStatCardStatus]',\n standalone: true,\n exportAs: 'slStatCardStatus',\n host: { 'data-part': 'status' },\n})\nexport class SlStatCardStatus {}\n\n/** The place at the end of the header for the consumer's link or button. */\n@Directive({\n selector: '[slStatCardAction]',\n standalone: true,\n exportAs: 'slStatCardAction',\n host: { 'data-part': 'action' },\n})\nexport class SlStatCardAction {}\n\n/** The value with its unit and its delta on one line, and the comparison under them. */\n@Directive({\n selector: '[slStatCardFigure]',\n standalone: true,\n exportAs: 'slStatCardFigure',\n host: { 'data-part': 'figure' },\n})\nexport class SlStatCardFigure {}\n\n/** The unit, wherever the consumer puts it inside the value: `$` before, `%` after. */\n@Directive({\n selector: '[slStatCardUnit]',\n standalone: true,\n exportAs: 'slStatCardUnit',\n host: { 'data-part': 'unit' },\n})\nexport class SlStatCardUnit {}\n\n@Directive({\n selector: '[slStatCardPeriod]',\n standalone: true,\n exportAs: 'slStatCardPeriod',\n host: { 'data-part': 'period' },\n})\nexport class SlStatCardPeriod {}\n\n/**\n * The prose under the figure: what the value was, and the period. Shown\n * only while there is a value to compare; a placeholder while loading.\n */\n@Component({\n selector: '[slStatCardComparison]',\n standalone: true,\n imports: [SlSkeleton],\n template: `@if (card.loading()) {\n <span slSkeleton inlineSize=\"10em\"></span>\n } @else {\n <ng-content />\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slStatCardComparison',\n host: { 'data-part': 'comparison', '[attr.hidden]': 'shown() ? null : \"\"' },\n})\nexport class SlStatCardComparison {\n protected readonly card = inject(SlStatCard);\n readonly shown = computed(() => this.card.loading() || this.card.status() === 'ready');\n}\n\n/**\n * Where a sparkline goes. The stylesheet hands it the card's tone and the\n * card's ground; while loading it holds a block the sparkline's height, so\n * the card does not change size when the line arrives.\n */\n@Component({\n selector: '[slStatCardTrend]',\n standalone: true,\n imports: [SlSkeleton],\n template: `@if (card.loading()) {\n <span slSkeleton shape=\"block\"></span>\n } @else {\n <ng-content />\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slStatCardTrend',\n host: { 'data-part': 'trend', '[attr.hidden]': 'shown() ? null : \"\"' },\n})\nexport class SlStatCardTrend {\n protected readonly card = inject(SlStatCard);\n readonly shown = computed(() => this.card.loading() || this.card.status() === 'ready');\n}\n\n/** What is said in place of a value that is missing or failed. Shown only then. */\n@Directive({\n selector: '[slStatCardMessage]',\n standalone: true,\n exportAs: 'slStatCardMessage',\n host: { 'data-part': 'message', '[attr.hidden]': 'shown() ? null : \"\"' },\n})\nexport class SlStatCardMessage {\n private readonly card = inject(SlStatCard);\n readonly shown = computed(() => !this.card.loading() && this.card.status() !== 'ready');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { inject } from '@angular/core';\nimport { SlSkeleton } from '@slotted/angular/skeleton';\n\nimport { SlStatCard } from './stat-card';\n\n/**\n * The number. A numeric `value` is formatted with the card's locale and\n * `formatOptions` — `notation: 'compact'` is how 12,900 becomes 12.9K — and\n * projected content is the consumer's own rendering, unit and all, after\n * it. A missing or failed value is the `empty` message, a dash; a loading\n * one is a placeholder five figures wide, on the value's own line.\n */\n@Component({\n selector: '[slStatCardValue]',\n standalone: true,\n imports: [SlSkeleton],\n template: `@if (card.loading()) {\n <span slSkeleton inlineSize=\"5ch\"></span>\n } @else if (card.status() !== 'ready') {\n {{ card.t('empty') }}\n } @else {\n {{ formatted() }}<ng-content />\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slStatCardValue',\n host: { 'data-part': 'value' },\n})\nexport class SlStatCardValue {\n /** A number, formatted with the card's locale and `formatOptions`; the text otherwise. */\n readonly value = input<number | string | undefined>(undefined);\n readonly formatOptions = input<Intl.NumberFormatOptions | undefined>(undefined);\n\n protected readonly card = inject(SlStatCard);\n\n readonly formatted = computed(() => {\n const value = this.value();\n if (typeof value !== 'number') return value ?? '';\n return new Intl.NumberFormat(\n this.card.resolvedLocale(),\n this.formatOptions() ?? this.card.resolvedFormatOptions(),\n ).format(value);\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}