@joanroucoux/cairn-ui 0.8.2 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/CHANGELOG.md +99 -0
  2. package/fesm2022/joanroucoux-cairn-ui-action-bar.mjs +57 -53
  3. package/fesm2022/joanroucoux-cairn-ui-action-bar.mjs.map +1 -1
  4. package/fesm2022/joanroucoux-cairn-ui-alert.mjs +155 -47
  5. package/fesm2022/joanroucoux-cairn-ui-alert.mjs.map +1 -1
  6. package/fesm2022/joanroucoux-cairn-ui-amount.mjs +220 -110
  7. package/fesm2022/joanroucoux-cairn-ui-amount.mjs.map +1 -1
  8. package/fesm2022/joanroucoux-cairn-ui-async.mjs +392 -216
  9. package/fesm2022/joanroucoux-cairn-ui-async.mjs.map +1 -1
  10. package/fesm2022/joanroucoux-cairn-ui-avatar.mjs +145 -68
  11. package/fesm2022/joanroucoux-cairn-ui-avatar.mjs.map +1 -1
  12. package/fesm2022/joanroucoux-cairn-ui-back-link.mjs +87 -47
  13. package/fesm2022/joanroucoux-cairn-ui-back-link.mjs.map +1 -1
  14. package/fesm2022/joanroucoux-cairn-ui-badge.mjs +83 -43
  15. package/fesm2022/joanroucoux-cairn-ui-badge.mjs.map +1 -1
  16. package/fesm2022/joanroucoux-cairn-ui-button.mjs +184 -104
  17. package/fesm2022/joanroucoux-cairn-ui-button.mjs.map +1 -1
  18. package/fesm2022/joanroucoux-cairn-ui-card.mjs +232 -137
  19. package/fesm2022/joanroucoux-cairn-ui-card.mjs.map +1 -1
  20. package/fesm2022/joanroucoux-cairn-ui-choice-chips.mjs +298 -102
  21. package/fesm2022/joanroucoux-cairn-ui-choice-chips.mjs.map +1 -1
  22. package/fesm2022/joanroucoux-cairn-ui-control.mjs +4 -17
  23. package/fesm2022/joanroucoux-cairn-ui-control.mjs.map +1 -1
  24. package/fesm2022/joanroucoux-cairn-ui-delta.mjs +150 -83
  25. package/fesm2022/joanroucoux-cairn-ui-delta.mjs.map +1 -1
  26. package/fesm2022/joanroucoux-cairn-ui-dialog.mjs +508 -471
  27. package/fesm2022/joanroucoux-cairn-ui-dialog.mjs.map +1 -1
  28. package/fesm2022/joanroucoux-cairn-ui-donut.mjs +255 -157
  29. package/fesm2022/joanroucoux-cairn-ui-donut.mjs.map +1 -1
  30. package/fesm2022/joanroucoux-cairn-ui-drawer.mjs +303 -0
  31. package/fesm2022/joanroucoux-cairn-ui-drawer.mjs.map +1 -0
  32. package/fesm2022/joanroucoux-cairn-ui-empty.mjs +76 -35
  33. package/fesm2022/joanroucoux-cairn-ui-empty.mjs.map +1 -1
  34. package/fesm2022/joanroucoux-cairn-ui-external-link.mjs +40 -31
  35. package/fesm2022/joanroucoux-cairn-ui-external-link.mjs.map +1 -1
  36. package/fesm2022/joanroucoux-cairn-ui-fact.mjs +188 -79
  37. package/fesm2022/joanroucoux-cairn-ui-fact.mjs.map +1 -1
  38. package/fesm2022/joanroucoux-cairn-ui-field.mjs +309 -173
  39. package/fesm2022/joanroucoux-cairn-ui-field.mjs.map +1 -1
  40. package/fesm2022/joanroucoux-cairn-ui-filter-chips.mjs +165 -87
  41. package/fesm2022/joanroucoux-cairn-ui-filter-chips.mjs.map +1 -1
  42. package/fesm2022/joanroucoux-cairn-ui-group-header.mjs +269 -0
  43. package/fesm2022/joanroucoux-cairn-ui-group-header.mjs.map +1 -0
  44. package/fesm2022/joanroucoux-cairn-ui-input.mjs +205 -85
  45. package/fesm2022/joanroucoux-cairn-ui-input.mjs.map +1 -1
  46. package/fesm2022/joanroucoux-cairn-ui-line-chart.mjs +838 -512
  47. package/fesm2022/joanroucoux-cairn-ui-line-chart.mjs.map +1 -1
  48. package/fesm2022/joanroucoux-cairn-ui-menu.mjs +401 -225
  49. package/fesm2022/joanroucoux-cairn-ui-menu.mjs.map +1 -1
  50. package/fesm2022/joanroucoux-cairn-ui-meter.mjs +143 -57
  51. package/fesm2022/joanroucoux-cairn-ui-meter.mjs.map +1 -1
  52. package/fesm2022/joanroucoux-cairn-ui-motion.mjs +367 -399
  53. package/fesm2022/joanroucoux-cairn-ui-motion.mjs.map +1 -1
  54. package/fesm2022/joanroucoux-cairn-ui-nav-item.mjs +73 -44
  55. package/fesm2022/joanroucoux-cairn-ui-nav-item.mjs.map +1 -1
  56. package/fesm2022/joanroucoux-cairn-ui-result-group.mjs +191 -0
  57. package/fesm2022/joanroucoux-cairn-ui-result-group.mjs.map +1 -0
  58. package/fesm2022/joanroucoux-cairn-ui-row.mjs +376 -146
  59. package/fesm2022/joanroucoux-cairn-ui-row.mjs.map +1 -1
  60. package/fesm2022/joanroucoux-cairn-ui-segmented.mjs +183 -81
  61. package/fesm2022/joanroucoux-cairn-ui-segmented.mjs.map +1 -1
  62. package/fesm2022/joanroucoux-cairn-ui-select-pill.mjs +233 -0
  63. package/fesm2022/joanroucoux-cairn-ui-select-pill.mjs.map +1 -0
  64. package/fesm2022/joanroucoux-cairn-ui-select.mjs +121 -67
  65. package/fesm2022/joanroucoux-cairn-ui-select.mjs.map +1 -1
  66. package/fesm2022/joanroucoux-cairn-ui-skeleton.mjs +129 -51
  67. package/fesm2022/joanroucoux-cairn-ui-skeleton.mjs.map +1 -1
  68. package/fesm2022/joanroucoux-cairn-ui-stale-link.mjs +80 -39
  69. package/fesm2022/joanroucoux-cairn-ui-stale-link.mjs.map +1 -1
  70. package/fesm2022/joanroucoux-cairn-ui-stat.mjs +85 -55
  71. package/fesm2022/joanroucoux-cairn-ui-stat.mjs.map +1 -1
  72. package/fesm2022/joanroucoux-cairn-ui-switch.mjs +48 -35
  73. package/fesm2022/joanroucoux-cairn-ui-switch.mjs.map +1 -1
  74. package/fesm2022/joanroucoux-cairn-ui-tab-bar.mjs +113 -69
  75. package/fesm2022/joanroucoux-cairn-ui-tab-bar.mjs.map +1 -1
  76. package/fesm2022/joanroucoux-cairn-ui-table.mjs +1036 -310
  77. package/fesm2022/joanroucoux-cairn-ui-table.mjs.map +1 -1
  78. package/fesm2022/joanroucoux-cairn-ui-toast.mjs +240 -127
  79. package/fesm2022/joanroucoux-cairn-ui-toast.mjs.map +1 -1
  80. package/fesm2022/joanroucoux-cairn-ui.mjs +0 -4
  81. package/package.json +17 -1
  82. package/styles/motion.css +1 -13
  83. package/styles/tokens.css +35 -64
  84. package/types/joanroucoux-cairn-ui-action-bar.d.ts +9 -14
  85. package/types/joanroucoux-cairn-ui-alert.d.ts +29 -15
  86. package/types/joanroucoux-cairn-ui-amount.d.ts +64 -32
  87. package/types/joanroucoux-cairn-ui-async.d.ts +85 -38
  88. package/types/joanroucoux-cairn-ui-avatar.d.ts +34 -22
  89. package/types/joanroucoux-cairn-ui-back-link.d.ts +20 -15
  90. package/types/joanroucoux-cairn-ui-badge.d.ts +22 -14
  91. package/types/joanroucoux-cairn-ui-button.d.ts +36 -18
  92. package/types/joanroucoux-cairn-ui-card.d.ts +48 -23
  93. package/types/joanroucoux-cairn-ui-choice-chips.d.ts +91 -35
  94. package/types/joanroucoux-cairn-ui-control.d.ts +9 -18
  95. package/types/joanroucoux-cairn-ui-delta.d.ts +46 -24
  96. package/types/joanroucoux-cairn-ui-dialog.d.ts +124 -57
  97. package/types/joanroucoux-cairn-ui-donut.d.ts +83 -46
  98. package/types/joanroucoux-cairn-ui-drawer.d.ts +73 -0
  99. package/types/joanroucoux-cairn-ui-empty.d.ts +20 -13
  100. package/types/joanroucoux-cairn-ui-external-link.d.ts +6 -10
  101. package/types/joanroucoux-cairn-ui-fact.d.ts +49 -25
  102. package/types/joanroucoux-cairn-ui-field.d.ts +72 -49
  103. package/types/joanroucoux-cairn-ui-filter-chips.d.ts +35 -20
  104. package/types/joanroucoux-cairn-ui-group-header.d.ts +58 -0
  105. package/types/joanroucoux-cairn-ui-input.d.ts +59 -37
  106. package/types/joanroucoux-cairn-ui-line-chart.d.ts +199 -89
  107. package/types/joanroucoux-cairn-ui-menu.d.ts +81 -44
  108. package/types/joanroucoux-cairn-ui-meter.d.ts +44 -22
  109. package/types/joanroucoux-cairn-ui-motion.d.ts +61 -75
  110. package/types/joanroucoux-cairn-ui-nav-item.d.ts +15 -13
  111. package/types/joanroucoux-cairn-ui-result-group.d.ts +52 -0
  112. package/types/joanroucoux-cairn-ui-row.d.ts +79 -37
  113. package/types/joanroucoux-cairn-ui-segmented.d.ts +51 -27
  114. package/types/joanroucoux-cairn-ui-select-pill.d.ts +52 -0
  115. package/types/joanroucoux-cairn-ui-select.d.ts +28 -18
  116. package/types/joanroucoux-cairn-ui-skeleton.d.ts +35 -18
  117. package/types/joanroucoux-cairn-ui-stale-link.d.ts +23 -16
  118. package/types/joanroucoux-cairn-ui-stat.d.ts +26 -21
  119. package/types/joanroucoux-cairn-ui-switch.d.ts +7 -11
  120. package/types/joanroucoux-cairn-ui-tab-bar.d.ts +20 -17
  121. package/types/joanroucoux-cairn-ui-table.d.ts +251 -89
  122. package/types/joanroucoux-cairn-ui-toast.d.ts +46 -36
  123. package/types/joanroucoux-cairn-ui.d.ts +1 -2
  124. package/fesm2022/joanroucoux-cairn-ui.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"joanroucoux-cairn-ui-external-link.mjs","sources":["../../../projects/ui/external-link/external-link.ts","../../../projects/ui/external-link/joanroucoux-cairn-ui-external-link.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n/**\n * Link to another site: the label followed by an external-link icon. A 44px target on touch,\n * an underline on hover with a mouse.\n *\n * @example\n * <a ui-external-link href=\"https://example.com\" target=\"_blank\" rel=\"noopener\">Page on example.com</a>\n */\n@Component({\n selector: 'a[ui-external-link]',\n template: `\n <ng-content />\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"14\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"1.75\"\n viewBox=\"0 0 24 24\"\n width=\"14\"\n >\n <path d=\"M15 3h6v6\" />\n <path d=\"M10 14 21 3\" />\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n </svg>\n `,\n host: {\n class:\n 'inline-flex min-h-11 items-center gap-1.5 rounded-[4px] text-label leading-[17px] font-medium lg:min-h-0 hover:underline underline-offset-3 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--ring) [&>svg]:flex-none',\n },\n})\nexport class UiExternalLink {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAEA;;;;;;AAMG;MA0BU,cAAc,CAAA;uGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qPAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvBf;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAMU,cAAc,EAAA,UAAA,EAAA,CAAA;kBAzB1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EACH,qPAAqP;AACxP,qBAAA;AACF,iBAAA;;;ACjCD;;AAEG;;;;"}
1
+ {"version":3,"file":"joanroucoux-cairn-ui-external-link.mjs","names":[],"sources":["../../../projects/ui/external-link/external-link.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n/**\n * Link to another site: the label followed by an external-link icon.\n *\n * @example\n * <a ui-external-link href=\"https://example.com\" target=\"_blank\" rel=\"noopener\">Page on example.com</a>\n */\n@Component({\n selector: 'a[ui-external-link]',\n template: `\n <ng-content />\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"14\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"1.75\"\n viewBox=\"0 0 24 24\"\n width=\"14\"\n >\n <path d=\"M15 3h6v6\" />\n <path d=\"M10 14 21 3\" />\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n </svg>\n `,\n host: {\n class:\n 'inline-flex min-h-11 items-center gap-1.5 rounded-[4px] text-label leading-[17px] font-medium lg:min-h-0 hover:underline underline-offset-3 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--ring) [&>svg]:flex-none',\n },\n})\nexport class UiExternalLink {}\n"],"mappings":";;AAiCA,IAAa,iBAAb,MAAa,eAAc;CAAd,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAc,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAd,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAc,cAAA;EAAA,UAAA;EAAA,MAAA,EAAA,gBAAA,sPAAA;EAAA,UAAA;EAAA,UAvBf;;;;;;;;;;;;;;;;;;EAiBT,UAAA;CAAA,CAAA;;AAMU,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAc,YAAA,CAAA;EAzB1B,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,UAAU;;;;;;;;;;;;;;;;;;GAkBV,MAAM,EACJ,OACE,sPACH;EACF,CAAA"}
@@ -1,70 +1,141 @@
1
- import * as i0 from '@angular/core';
2
- import { input, booleanAttribute, computed, Directive, Component } from '@angular/core';
3
-
4
- /** Available fact row sizes. `FactSize` is derived from this tuple. */
5
- const FACT_SIZES = ['md', 'sm', 'auto', 'recap'];
6
- /** Colour of the line under a fact value. `stale` flags an out-of-date figure. */
7
- const FACT_SUB_TONES = ['subtle', 'stale'];
1
+ import * as i0 from "@angular/core";
2
+ import { Component, Directive, booleanAttribute, computed, input } from "@angular/core";
3
+ const FACT_SIZES = [
4
+ "md",
5
+ "sm",
6
+ "auto",
7
+ "recap"
8
+ ];
9
+ const FACT_SUB_TONES = ["subtle", "stale"];
8
10
  const SIZE_CLASSES = {
9
- md: { row: 'gap-4 py-3 [&:not(:first-child)]:shadow-[inset_0_1px_0_var(--hairline)]', value: 'text-body' },
10
- sm: { row: 'gap-4 py-2.5', value: 'text-label' },
11
- auto: {
12
- row: 'gap-4 py-3 lg:py-2.5 max-lg:[&:not(:first-child)]:shadow-[inset_0_1px_0_var(--hairline)]',
13
- value: 'text-body lg:text-label',
14
- },
15
- recap: { row: 'gap-3 py-[9px] [&:not(:first-child)]:shadow-[inset_0_1px_0_var(--hairline)]', value: 'text-label' },
11
+ md: {
12
+ row: "gap-4 py-3 [&:not(:first-child)]:shadow-[inset_0_1px_0_var(--hairline)]",
13
+ value: "text-body"
14
+ },
15
+ sm: {
16
+ row: "gap-4 py-2.5",
17
+ value: "text-label"
18
+ },
19
+ auto: {
20
+ row: "gap-4 py-3 lg:py-2.5 max-lg:[&:not(:first-child)]:shadow-[inset_0_1px_0_var(--hairline)]",
21
+ value: "text-body lg:text-label"
22
+ },
23
+ recap: {
24
+ row: "gap-3 py-[9px] [&:not(:first-child)]:shadow-[inset_0_1px_0_var(--hairline)]",
25
+ value: "text-label"
26
+ }
16
27
  };
17
28
  const SUB_TONE_CLASSES = {
18
- subtle: 'text-(--subtle-foreground)',
19
- stale: 'text-(--stale)',
29
+ subtle: "text-(--subtle-foreground)",
30
+ stale: "text-(--stale)"
31
+ };
32
+ var UiFacts = class UiFacts {
33
+ ruled = input(false, {
34
+ ...ngDevMode ? { debugName: "ruled" } : /* istanbul ignore next */ {},
35
+ transform: booleanAttribute
36
+ });
37
+ classes = computed(() => this.ruled() ? "m-0 flex flex-col shadow-[inset_0_1px_0_var(--hairline)]" : "m-0 flex flex-col", ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
38
+ static ɵfac = i0.ɵɵngDeclareFactory({
39
+ minVersion: "12.0.0",
40
+ version: "22.2.0",
41
+ ngImport: i0,
42
+ type: UiFacts,
43
+ deps: [],
44
+ target: i0.ɵɵFactoryTarget.Directive
45
+ });
46
+ static ɵdir = i0.ɵɵngDeclareDirective({
47
+ minVersion: "17.1.0",
48
+ version: "22.2.0",
49
+ type: UiFacts,
50
+ isStandalone: true,
51
+ selector: "dl[uiFacts]",
52
+ inputs: { ruled: {
53
+ classPropertyName: "ruled",
54
+ publicName: "ruled",
55
+ isSignal: true,
56
+ isRequired: false,
57
+ transformFunction: null
58
+ } },
59
+ host: { properties: { "class": "classes()" } },
60
+ ngImport: i0
61
+ });
20
62
  };
21
- /**
22
- * The list that holds `div[ui-fact]` rows, as a native description list.
23
- *
24
- * @example
25
- * <dl uiFacts>
26
- * <div ui-fact label="Quantity">500</div>
27
- * <div ui-fact label="Price" sub="24/09 · Yahoo">28,64 €</div>
28
- * </dl>
29
- */
30
- class UiFacts {
31
- ruled = input(false, { ...(ngDevMode ? { debugName: "ruled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
32
- classes = computed(() => this.ruled() ? 'm-0 flex flex-col shadow-[inset_0_1px_0_var(--hairline)]' : 'm-0 flex flex-col', /* @ts-ignore */
33
- ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
34
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: UiFacts, deps: [], target: i0.ɵɵFactoryTarget.Directive });
35
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: UiFacts, isStandalone: true, selector: "dl[uiFacts]", inputs: { ruled: { classPropertyName: "ruled", publicName: "ruled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0 });
36
- }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: UiFacts, decorators: [{
38
- type: Directive,
39
- args: [{
40
- selector: 'dl[uiFacts]',
41
- host: { '[class]': 'classes()' },
42
- }]
43
- }], propDecorators: { ruled: [{ type: i0.Input, args: [{ isSignal: true, alias: "ruled", required: false }] }] } });
44
- /**
45
- * One fact of a `dl[uiFacts]`: a label on the left, its value on the right, an optional sub-line
46
- * under the value, and a hairline above every row but the first at the `md` size (the `sm` desktop list is separated by space only). The projected content is the value.
47
- *
48
- * @example
49
- * <div ui-fact label="Price" sub="24/09 · Yahoo" subTone="stale">28,64 €</div>
50
- */
51
- class UiFact {
52
- label = input.required(/* @ts-ignore */
53
- ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
54
- sub = input(/* @ts-ignore */
55
- ...(ngDevMode ? [undefined, { debugName: "sub" }] : /* istanbul ignore next */ []));
56
- subTone = input('subtle', /* @ts-ignore */
57
- ...(ngDevMode ? [{ debugName: "subTone" }] : /* istanbul ignore next */ []));
58
- size = input('md', /* @ts-ignore */
59
- ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
60
- classes = computed(() => `flex items-baseline justify-between ${SIZE_CLASSES[this.size()].row}`, /* @ts-ignore */
61
- ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
62
- valueClasses = computed(() => `${SIZE_CLASSES[this.size()].value} tabular-nums`, /* @ts-ignore */
63
- ...(ngDevMode ? [{ debugName: "valueClasses" }] : /* istanbul ignore next */ []));
64
- subClasses = computed(() => `text-caption ${SUB_TONE_CLASSES[this.subTone()]}`, /* @ts-ignore */
65
- ...(ngDevMode ? [{ debugName: "subClasses" }] : /* istanbul ignore next */ []));
66
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: UiFact, deps: [], target: i0.ɵɵFactoryTarget.Component });
67
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: UiFact, isStandalone: true, selector: "div[ui-fact]", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, sub: { classPropertyName: "sub", publicName: "sub", isSignal: true, isRequired: false, transformFunction: null }, subTone: { classPropertyName: "subTone", publicName: "subTone", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `
63
+ i0.ɵɵngDeclareClassMetadata({
64
+ minVersion: "12.0.0",
65
+ version: "22.2.0",
66
+ ngImport: i0,
67
+ type: UiFacts,
68
+ decorators: [{
69
+ type: Directive,
70
+ args: [{
71
+ selector: "dl[uiFacts]",
72
+ host: { "[class]": "classes()" }
73
+ }]
74
+ }],
75
+ propDecorators: { ruled: [{
76
+ type: i0.Input,
77
+ args: [{
78
+ isSignal: true,
79
+ alias: "ruled",
80
+ required: false
81
+ }]
82
+ }] }
83
+ });
84
+ var UiFact = class UiFact {
85
+ label = input.required(...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
86
+ sub = input(...ngDevMode ? [void 0, { debugName: "sub" }] : /* istanbul ignore next */ []);
87
+ subTone = input("subtle", ...ngDevMode ? [{ debugName: "subTone" }] : /* istanbul ignore next */ []);
88
+ size = input("md", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
89
+ classes = computed(() => `flex items-baseline justify-between ${SIZE_CLASSES[this.size()].row}`, ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
90
+ valueClasses = computed(() => `${SIZE_CLASSES[this.size()].value} tabular-nums`, ...ngDevMode ? [{ debugName: "valueClasses" }] : /* istanbul ignore next */ []);
91
+ subClasses = computed(() => `text-caption ${SUB_TONE_CLASSES[this.subTone()]}`, ...ngDevMode ? [{ debugName: "subClasses" }] : /* istanbul ignore next */ []);
92
+ static ɵfac = i0.ɵɵngDeclareFactory({
93
+ minVersion: "12.0.0",
94
+ version: "22.2.0",
95
+ ngImport: i0,
96
+ type: UiFact,
97
+ deps: [],
98
+ target: i0.ɵɵFactoryTarget.Component
99
+ });
100
+ static ɵcmp = i0.ɵɵngDeclareComponent({
101
+ minVersion: "17.0.0",
102
+ version: "22.2.0",
103
+ type: UiFact,
104
+ isStandalone: true,
105
+ selector: "div[ui-fact]",
106
+ inputs: {
107
+ label: {
108
+ classPropertyName: "label",
109
+ publicName: "label",
110
+ isSignal: true,
111
+ isRequired: true,
112
+ transformFunction: null
113
+ },
114
+ sub: {
115
+ classPropertyName: "sub",
116
+ publicName: "sub",
117
+ isSignal: true,
118
+ isRequired: false,
119
+ transformFunction: null
120
+ },
121
+ subTone: {
122
+ classPropertyName: "subTone",
123
+ publicName: "subTone",
124
+ isSignal: true,
125
+ isRequired: false,
126
+ transformFunction: null
127
+ },
128
+ size: {
129
+ classPropertyName: "size",
130
+ publicName: "size",
131
+ isSignal: true,
132
+ isRequired: false,
133
+ transformFunction: null
134
+ }
135
+ },
136
+ host: { properties: { "class": "classes()" } },
137
+ ngImport: i0,
138
+ template: `
68
139
  <dt class="text-label text-(--muted-foreground)">{{ label() }}</dt>
69
140
  <dd class="m-0 flex flex-col items-end text-right">
70
141
  <span [class]="valueClasses()"><ng-content /></span>
@@ -72,13 +143,20 @@ class UiFact {
72
143
  <span [class]="subClasses()">{{ sub() }}</span>
73
144
  }
74
145
  </dd>
75
- `, isInline: true });
76
- }
77
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: UiFact, decorators: [{
78
- type: Component,
79
- args: [{
80
- selector: 'div[ui-fact]',
81
- template: `
146
+ `,
147
+ isInline: true
148
+ });
149
+ };
150
+ i0.ɵɵngDeclareClassMetadata({
151
+ minVersion: "12.0.0",
152
+ version: "22.2.0",
153
+ ngImport: i0,
154
+ type: UiFact,
155
+ decorators: [{
156
+ type: Component,
157
+ args: [{
158
+ selector: "div[ui-fact]",
159
+ template: `
82
160
  <dt class="text-label text-(--muted-foreground)">{{ label() }}</dt>
83
161
  <dd class="m-0 flex flex-col items-end text-right">
84
162
  <span [class]="valueClasses()"><ng-content /></span>
@@ -87,13 +165,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
87
165
  }
88
166
  </dd>
89
167
  `,
90
- host: { '[class]': 'classes()' },
91
- }]
92
- }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], sub: [{ type: i0.Input, args: [{ isSignal: true, alias: "sub", required: false }] }], subTone: [{ type: i0.Input, args: [{ isSignal: true, alias: "subTone", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] } });
93
-
94
- /**
95
- * Generated bundle index. Do not edit.
96
- */
97
-
168
+ host: { "[class]": "classes()" }
169
+ }]
170
+ }],
171
+ propDecorators: {
172
+ label: [{
173
+ type: i0.Input,
174
+ args: [{
175
+ isSignal: true,
176
+ alias: "label",
177
+ required: true
178
+ }]
179
+ }],
180
+ sub: [{
181
+ type: i0.Input,
182
+ args: [{
183
+ isSignal: true,
184
+ alias: "sub",
185
+ required: false
186
+ }]
187
+ }],
188
+ subTone: [{
189
+ type: i0.Input,
190
+ args: [{
191
+ isSignal: true,
192
+ alias: "subTone",
193
+ required: false
194
+ }]
195
+ }],
196
+ size: [{
197
+ type: i0.Input,
198
+ args: [{
199
+ isSignal: true,
200
+ alias: "size",
201
+ required: false
202
+ }]
203
+ }]
204
+ }
205
+ });
98
206
  export { FACT_SIZES, FACT_SUB_TONES, UiFact, UiFacts };
99
- //# sourceMappingURL=joanroucoux-cairn-ui-fact.mjs.map
207
+
208
+ //# sourceMappingURL=joanroucoux-cairn-ui-fact.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"joanroucoux-cairn-ui-fact.mjs","sources":["../../../projects/ui/fact/fact.ts","../../../projects/ui/fact/joanroucoux-cairn-ui-fact.ts"],"sourcesContent":["import { Component, Directive, booleanAttribute, computed, input } from '@angular/core';\n\n/** Available fact row sizes. `FactSize` is derived from this tuple. */\nexport const FACT_SIZES = ['md', 'sm', 'auto', 'recap'] as const;\nexport type FactSize = (typeof FACT_SIZES)[number];\n\n/** Colour of the line under a fact value. `stale` flags an out-of-date figure. */\nexport const FACT_SUB_TONES = ['subtle', 'stale'] as const;\nexport type FactSubTone = (typeof FACT_SUB_TONES)[number];\n\nconst SIZE_CLASSES: Record<FactSize, { row: string; value: string }> = {\n md: { row: 'gap-4 py-3 [&:not(:first-child)]:shadow-[inset_0_1px_0_var(--hairline)]', value: 'text-body' },\n sm: { row: 'gap-4 py-2.5', value: 'text-label' },\n auto: {\n row: 'gap-4 py-3 lg:py-2.5 max-lg:[&:not(:first-child)]:shadow-[inset_0_1px_0_var(--hairline)]',\n value: 'text-body lg:text-label',\n },\n recap: { row: 'gap-3 py-[9px] [&:not(:first-child)]:shadow-[inset_0_1px_0_var(--hairline)]', value: 'text-label' },\n};\n\nconst SUB_TONE_CLASSES: Record<FactSubTone, string> = {\n subtle: 'text-(--subtle-foreground)',\n stale: 'text-(--stale)',\n};\n\n/**\n * The list that holds `div[ui-fact]` rows, as a native description list.\n *\n * @example\n * <dl uiFacts>\n * <div ui-fact label=\"Quantity\">500</div>\n * <div ui-fact label=\"Price\" sub=\"24/09 · Yahoo\">28,64 €</div>\n * </dl>\n */\n@Directive({\n selector: 'dl[uiFacts]',\n host: { '[class]': 'classes()' },\n})\nexport class UiFacts {\n readonly ruled = input(false, { transform: booleanAttribute });\n\n protected readonly classes = computed(() =>\n this.ruled() ? 'm-0 flex flex-col shadow-[inset_0_1px_0_var(--hairline)]' : 'm-0 flex flex-col',\n );\n}\n\n/**\n * One fact of a `dl[uiFacts]`: a label on the left, its value on the right, an optional sub-line\n * under the value, and a hairline above every row but the first at the `md` size (the `sm` desktop list is separated by space only). The projected content is the value.\n *\n * @example\n * <div ui-fact label=\"Price\" sub=\"24/09 · Yahoo\" subTone=\"stale\">28,64 €</div>\n */\n@Component({\n selector: 'div[ui-fact]',\n template: `\n <dt class=\"text-label text-(--muted-foreground)\">{{ label() }}</dt>\n <dd class=\"m-0 flex flex-col items-end text-right\">\n <span [class]=\"valueClasses()\"><ng-content /></span>\n @if (sub()) {\n <span [class]=\"subClasses()\">{{ sub() }}</span>\n }\n </dd>\n `,\n host: { '[class]': 'classes()' },\n})\nexport class UiFact {\n readonly label = input.required<string>();\n readonly sub = input<string>();\n readonly subTone = input<FactSubTone>('subtle');\n readonly size = input<FactSize>('md');\n\n protected readonly classes = computed(() => `flex items-baseline justify-between ${SIZE_CLASSES[this.size()].row}`);\n protected readonly valueClasses = computed(() => `${SIZE_CLASSES[this.size()].value} tabular-nums`);\n protected readonly subClasses = computed(() => `text-caption ${SUB_TONE_CLASSES[this.subTone()]}`);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAEA;AACO,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO;AAGtD;MACa,cAAc,GAAG,CAAC,QAAQ,EAAE,OAAO;AAGhD,MAAM,YAAY,GAAqD;IACrE,EAAE,EAAE,EAAE,GAAG,EAAE,yEAAyE,EAAE,KAAK,EAAE,WAAW,EAAE;IAC1G,EAAE,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE;AAChD,IAAA,IAAI,EAAE;AACJ,QAAA,GAAG,EAAE,0FAA0F;AAC/F,QAAA,KAAK,EAAE,yBAAyB;AACjC,KAAA;IACD,KAAK,EAAE,EAAE,GAAG,EAAE,6EAA6E,EAAE,KAAK,EAAE,YAAY,EAAE;CACnH;AAED,MAAM,gBAAgB,GAAgC;AACpD,IAAA,MAAM,EAAE,4BAA4B;AACpC,IAAA,KAAK,EAAE,gBAAgB;CACxB;AAED;;;;;;;;AAQG;MAKU,OAAO,CAAA;IACT,KAAK,GAAG,KAAK,CAAC,KAAK,6EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE3C,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,IAAI,CAAC,KAAK,EAAE,GAAG,0DAA0D,GAAG,mBAAmB;gFAChG;uGALU,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBAJnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE;AACjC,iBAAA;;AASD;;;;;;AAMG;MAcU,MAAM,CAAA;IACR,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAU;AAChC,IAAA,GAAG,GAAG,KAAK;uFAAU;IACrB,OAAO,GAAG,KAAK,CAAc,QAAQ;gFAAC;IACtC,IAAI,GAAG,KAAK,CAAW,IAAI;6EAAC;AAElB,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAA,oCAAA,EAAuC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAA,CAAE;gFAAC;AAChG,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAA,EAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAA,aAAA,CAAe;qFAAC;AAChF,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAA,aAAA,EAAgB,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA,CAAE;mFAAC;uGARvF,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXP;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAGU,MAAM,EAAA,UAAA,EAAA,CAAA;kBAblB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE;AACjC,iBAAA;;;ACjED;;AAEG;;;;"}
1
+ {"version":3,"file":"joanroucoux-cairn-ui-fact.mjs","names":[],"sources":["../../../projects/ui/fact/fact.ts"],"sourcesContent":["import { Component, Directive, booleanAttribute, computed, input } from '@angular/core';\n\n/** Available fact row sizes. */\nexport const FACT_SIZES = ['md', 'sm', 'auto', 'recap'] as const;\nexport type FactSize = (typeof FACT_SIZES)[number];\n\n/** Colour of the line under a fact value. `stale` flags an out-of-date figure. */\nexport const FACT_SUB_TONES = ['subtle', 'stale'] as const;\nexport type FactSubTone = (typeof FACT_SUB_TONES)[number];\n\nconst SIZE_CLASSES: Record<FactSize, { row: string; value: string }> = {\n md: { row: 'gap-4 py-3 [&:not(:first-child)]:shadow-[inset_0_1px_0_var(--hairline)]', value: 'text-body' },\n sm: { row: 'gap-4 py-2.5', value: 'text-label' },\n auto: {\n row: 'gap-4 py-3 lg:py-2.5 max-lg:[&:not(:first-child)]:shadow-[inset_0_1px_0_var(--hairline)]',\n value: 'text-body lg:text-label',\n },\n recap: { row: 'gap-3 py-[9px] [&:not(:first-child)]:shadow-[inset_0_1px_0_var(--hairline)]', value: 'text-label' },\n};\n\nconst SUB_TONE_CLASSES: Record<FactSubTone, string> = {\n subtle: 'text-(--subtle-foreground)',\n stale: 'text-(--stale)',\n};\n\n/**\n * The list that holds `div[ui-fact]` rows, as a native description list.\n *\n * @example\n * <dl uiFacts>\n * <div ui-fact label=\"Quantity\">500</div>\n * <div ui-fact label=\"Price\" sub=\"24/09 · Yahoo\">28,64 €</div>\n * </dl>\n */\n@Directive({\n selector: 'dl[uiFacts]',\n host: { '[class]': 'classes()' },\n})\nexport class UiFacts {\n readonly ruled = input(false, { transform: booleanAttribute });\n\n protected readonly classes = computed(() =>\n this.ruled() ? 'm-0 flex flex-col shadow-[inset_0_1px_0_var(--hairline)]' : 'm-0 flex flex-col',\n );\n}\n\n/**\n * One fact of a `dl[uiFacts]`: a label, its value (the projected content) and an optional sub-line\n * under the value.\n *\n * @example\n * <div ui-fact label=\"Price\" sub=\"24/09 · Yahoo\" subTone=\"stale\">28,64 €</div>\n */\n@Component({\n selector: 'div[ui-fact]',\n template: `\n <dt class=\"text-label text-(--muted-foreground)\">{{ label() }}</dt>\n <dd class=\"m-0 flex flex-col items-end text-right\">\n <span [class]=\"valueClasses()\"><ng-content /></span>\n @if (sub()) {\n <span [class]=\"subClasses()\">{{ sub() }}</span>\n }\n </dd>\n `,\n host: { '[class]': 'classes()' },\n})\nexport class UiFact {\n readonly label = input.required<string>();\n readonly sub = input<string>();\n readonly subTone = input<FactSubTone>('subtle');\n readonly size = input<FactSize>('md');\n\n protected readonly classes = computed(() => `flex items-baseline justify-between ${SIZE_CLASSES[this.size()].row}`);\n protected readonly valueClasses = computed(() => `${SIZE_CLASSES[this.size()].value} tabular-nums`);\n protected readonly subClasses = computed(() => `text-caption ${SUB_TONE_CLASSES[this.subTone()]}`);\n}\n"],"mappings":"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"}