@clicoh/orion-library 1.2.0-beta.21 → 1.2.0-beta.23

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 (140) hide show
  1. package/assets/avatares/caja-ruedas.svg +1 -0
  2. package/assets/avatares/cohete-azul.svg +1 -0
  3. package/assets/avatares/criatura-tres-ojos.svg +1 -0
  4. package/assets/avatares/cubo-brazos.svg +1 -0
  5. package/assets/avatares/cubo-morado.svg +1 -0
  6. package/assets/avatares/dino-placas-amarillas.svg +1 -0
  7. package/assets/avatares/dino-placas-azules.svg +1 -0
  8. package/assets/avatares/edificio-cupulas.svg +1 -0
  9. package/assets/avatares/globo-anillo.svg +1 -0
  10. package/assets/avatares/pulpo-morado.svg +1 -0
  11. package/assets/avatares/robot-lente.svg +1 -0
  12. package/assets/avatares/ventana-codigo.svg +1 -0
  13. package/assets/css/expresivo.css +37 -0
  14. package/dist/components/01-atoms/CodeBlock/CodeBlock.d.ts +11 -3
  15. package/dist/components/01-atoms/CodeBlock/CodeBlock.d.ts.map +1 -1
  16. package/dist/components/01-atoms/CodeBlock/CodeBlock.jsx +13 -5
  17. package/dist/components/01-atoms/CodeBlock/CodeBlock.jsx.map +1 -1
  18. package/dist/components/01-atoms/OtpInput/OtpInput.d.ts +1 -1
  19. package/dist/components/01-atoms/OtpInput/OtpInput.jsx +3 -2
  20. package/dist/components/01-atoms/OtpInput/OtpInput.jsx.map +1 -1
  21. package/dist/components/02-molecules/ActionMenu/ActionMenu.d.ts +39 -0
  22. package/dist/components/02-molecules/ActionMenu/ActionMenu.d.ts.map +1 -0
  23. package/dist/components/02-molecules/ActionMenu/ActionMenu.jsx +36 -0
  24. package/dist/components/02-molecules/ActionMenu/ActionMenu.jsx.map +1 -0
  25. package/dist/components/02-molecules/ActionMenu/index.d.ts +2 -0
  26. package/dist/components/02-molecules/ActionMenu/index.d.ts.map +1 -0
  27. package/dist/components/02-molecules/ActionMenu/index.js +2 -0
  28. package/dist/components/02-molecules/ActionMenu/index.js.map +1 -0
  29. package/dist/components/02-molecules/ImageViewer/ImageViewer.d.ts +35 -3
  30. package/dist/components/02-molecules/ImageViewer/ImageViewer.d.ts.map +1 -1
  31. package/dist/components/02-molecules/ImageViewer/ImageViewer.jsx +193 -31
  32. package/dist/components/02-molecules/ImageViewer/ImageViewer.jsx.map +1 -1
  33. package/dist/components/02-molecules/ImageViewer/ImageViewerDocument.d.ts +52 -0
  34. package/dist/components/02-molecules/ImageViewer/ImageViewerDocument.d.ts.map +1 -0
  35. package/dist/components/02-molecules/ImageViewer/ImageViewerDocument.jsx +78 -0
  36. package/dist/components/02-molecules/ImageViewer/ImageViewerDocument.jsx.map +1 -0
  37. package/dist/components/02-molecules/ImageViewer/ImageViewerImage.d.ts +8 -2
  38. package/dist/components/02-molecules/ImageViewer/ImageViewerImage.d.ts.map +1 -1
  39. package/dist/components/02-molecules/ImageViewer/ImageViewerImage.jsx +10 -4
  40. package/dist/components/02-molecules/ImageViewer/ImageViewerImage.jsx.map +1 -1
  41. package/dist/components/02-molecules/ImageViewer/usePdfPages.d.ts +20 -0
  42. package/dist/components/02-molecules/ImageViewer/usePdfPages.d.ts.map +1 -0
  43. package/dist/components/02-molecules/ImageViewer/usePdfPages.js +113 -0
  44. package/dist/components/02-molecules/ImageViewer/usePdfPages.js.map +1 -0
  45. package/dist/components/02-molecules/Tab/TabList.d.ts.map +1 -1
  46. package/dist/components/02-molecules/Tab/TabList.jsx +10 -6
  47. package/dist/components/02-molecules/Tab/TabList.jsx.map +1 -1
  48. package/dist/components/02-molecules/index.d.ts +1 -0
  49. package/dist/components/02-molecules/index.d.ts.map +1 -1
  50. package/dist/components/02-molecules/index.js +1 -0
  51. package/dist/components/02-molecules/index.js.map +1 -1
  52. package/dist/components/03-organisms/BarChart/BarChart.d.ts +52 -0
  53. package/dist/components/03-organisms/BarChart/BarChart.d.ts.map +1 -0
  54. package/dist/components/03-organisms/BarChart/BarChart.jsx +116 -0
  55. package/dist/components/03-organisms/BarChart/BarChart.jsx.map +1 -0
  56. package/dist/components/03-organisms/BarChart/index.d.ts +2 -0
  57. package/dist/components/03-organisms/BarChart/index.d.ts.map +1 -0
  58. package/dist/components/03-organisms/BarChart/index.js +2 -0
  59. package/dist/components/03-organisms/BarChart/index.js.map +1 -0
  60. package/dist/components/03-organisms/DataTable/DataTable.d.ts +5 -2
  61. package/dist/components/03-organisms/DataTable/DataTable.d.ts.map +1 -1
  62. package/dist/components/03-organisms/DataTable/DataTable.jsx +10 -7
  63. package/dist/components/03-organisms/DataTable/DataTable.jsx.map +1 -1
  64. package/dist/components/03-organisms/index.d.ts +1 -0
  65. package/dist/components/03-organisms/index.d.ts.map +1 -1
  66. package/dist/components/03-organisms/index.js +1 -0
  67. package/dist/components/03-organisms/index.js.map +1 -1
  68. package/dist/components/04-templates/LoginTemplate/LoginForm.d.ts +6 -1
  69. package/dist/components/04-templates/LoginTemplate/LoginForm.d.ts.map +1 -1
  70. package/dist/components/04-templates/LoginTemplate/LoginForm.jsx +29 -7
  71. package/dist/components/04-templates/LoginTemplate/LoginForm.jsx.map +1 -1
  72. package/dist/components/04-templates/LoginTemplate/SetupMfa/StepThree.d.ts.map +1 -1
  73. package/dist/components/04-templates/LoginTemplate/SetupMfa/StepThree.jsx +8 -4
  74. package/dist/components/04-templates/LoginTemplate/SetupMfa/StepThree.jsx.map +1 -1
  75. package/dist/components/04-templates/LoginTemplate/SetupMfa/StepTwo.d.ts.map +1 -1
  76. package/dist/components/04-templates/LoginTemplate/SetupMfa/StepTwo.jsx +10 -3
  77. package/dist/components/04-templates/LoginTemplate/SetupMfa/StepTwo.jsx.map +1 -1
  78. package/dist/components/04-templates/LoginTemplate/index.d.ts +1 -1
  79. package/dist/components/04-templates/LoginTemplate/index.d.ts.map +1 -1
  80. package/dist/components/04-templates/LoginTemplate/submitOnEnter.d.ts +9 -0
  81. package/dist/components/04-templates/LoginTemplate/submitOnEnter.d.ts.map +1 -0
  82. package/dist/components/04-templates/LoginTemplate/submitOnEnter.js +15 -0
  83. package/dist/components/04-templates/LoginTemplate/submitOnEnter.js.map +1 -0
  84. package/expresivo/ExpAccentNote/ExpAccentNote.d.ts +25 -0
  85. package/expresivo/ExpAccentNote/ExpAccentNote.d.ts.map +1 -0
  86. package/expresivo/ExpAccentNote/ExpAccentNote.jsx +47 -0
  87. package/expresivo/ExpAccentNote/ExpAccentNote.jsx.map +1 -0
  88. package/expresivo/ExpAccentNote/index.d.ts +2 -0
  89. package/expresivo/ExpAccentNote/index.d.ts.map +1 -0
  90. package/expresivo/ExpAccentNote/index.js +2 -0
  91. package/expresivo/ExpAccentNote/index.js.map +1 -0
  92. package/expresivo/ExpCodeHostIcon/ExpCodeHostIcon.d.ts +29 -0
  93. package/expresivo/ExpCodeHostIcon/ExpCodeHostIcon.d.ts.map +1 -0
  94. package/expresivo/ExpCodeHostIcon/ExpCodeHostIcon.jsx +44 -0
  95. package/expresivo/ExpCodeHostIcon/ExpCodeHostIcon.jsx.map +1 -0
  96. package/expresivo/ExpCodeHostIcon/index.d.ts +2 -0
  97. package/expresivo/ExpCodeHostIcon/index.d.ts.map +1 -0
  98. package/expresivo/ExpCodeHostIcon/index.js +2 -0
  99. package/expresivo/ExpCodeHostIcon/index.js.map +1 -0
  100. package/expresivo/ExpFigureBand/ExpFigureBand.d.ts +61 -0
  101. package/expresivo/ExpFigureBand/ExpFigureBand.d.ts.map +1 -0
  102. package/expresivo/ExpFigureBand/ExpFigureBand.jsx +102 -0
  103. package/expresivo/ExpFigureBand/ExpFigureBand.jsx.map +1 -0
  104. package/expresivo/ExpFigureBand/index.d.ts +2 -0
  105. package/expresivo/ExpFigureBand/index.d.ts.map +1 -0
  106. package/expresivo/ExpFigureBand/index.js +2 -0
  107. package/expresivo/ExpFigureBand/index.js.map +1 -0
  108. package/expresivo/ExpGrowBar/ExpGrowBar.d.ts +13 -2
  109. package/expresivo/ExpGrowBar/ExpGrowBar.d.ts.map +1 -1
  110. package/expresivo/ExpGrowBar/ExpGrowBar.jsx +16 -4
  111. package/expresivo/ExpGrowBar/ExpGrowBar.jsx.map +1 -1
  112. package/expresivo/ExpRepoAvatar/ExpRepoAvatar.d.ts +3 -0
  113. package/expresivo/ExpRepoAvatar/ExpRepoAvatar.d.ts.map +1 -1
  114. package/expresivo/ExpRepoAvatar/ExpRepoAvatar.jsx +3 -0
  115. package/expresivo/ExpRepoAvatar/ExpRepoAvatar.jsx.map +1 -1
  116. package/expresivo/ExpRepoAvatar/catalog.d.ts +6 -2
  117. package/expresivo/ExpRepoAvatar/catalog.d.ts.map +1 -1
  118. package/expresivo/ExpRepoAvatar/catalog.js +29 -1
  119. package/expresivo/ExpRepoAvatar/catalog.js.map +1 -1
  120. package/expresivo/ExpSplitCard/ExpSplitCard.d.ts +38 -0
  121. package/expresivo/ExpSplitCard/ExpSplitCard.d.ts.map +1 -0
  122. package/expresivo/ExpSplitCard/ExpSplitCard.jsx +48 -0
  123. package/expresivo/ExpSplitCard/ExpSplitCard.jsx.map +1 -0
  124. package/expresivo/ExpSplitCard/index.d.ts +2 -0
  125. package/expresivo/ExpSplitCard/index.d.ts.map +1 -0
  126. package/expresivo/ExpSplitCard/index.js +2 -0
  127. package/expresivo/ExpSplitCard/index.js.map +1 -0
  128. package/expresivo/ExpStatusTag/ExpStatusTag.d.ts +26 -0
  129. package/expresivo/ExpStatusTag/ExpStatusTag.d.ts.map +1 -0
  130. package/expresivo/ExpStatusTag/ExpStatusTag.jsx +44 -0
  131. package/expresivo/ExpStatusTag/ExpStatusTag.jsx.map +1 -0
  132. package/expresivo/ExpStatusTag/index.d.ts +2 -0
  133. package/expresivo/ExpStatusTag/index.d.ts.map +1 -0
  134. package/expresivo/ExpStatusTag/index.js +2 -0
  135. package/expresivo/ExpStatusTag/index.js.map +1 -0
  136. package/expresivo/index.d.ts +5 -0
  137. package/expresivo/index.d.ts.map +1 -1
  138. package/expresivo/index.js +5 -0
  139. package/expresivo/index.js.map +1 -1
  140. package/package.json +2 -1
@@ -0,0 +1,102 @@
1
+ 'use client';
2
+ import { Each, Skeleton, Stat } from '@clicoh/orion-library';
3
+ import clsx from 'clsx';
4
+ import { useExpScope } from '../ExpScope/ExpScope';
5
+ // The small eyebrow takes the strong shades: the base error, success and amber
6
+ // sit below 4.5:1 on white at 10px.
7
+ const toneMap = {
8
+ accent: 'text-lavender dark:text-lavender-dark',
9
+ success: 'text-success-strong dark:text-success-dark',
10
+ warning: 'text-amber-strong dark:text-amber-dark',
11
+ error: 'text-error-strong dark:text-error-dark',
12
+ };
13
+ const statTone = {
14
+ accent: 'default',
15
+ success: 'success',
16
+ warning: 'warning',
17
+ error: 'error',
18
+ };
19
+ function Highlight({ figure, tone, side, isLoading, }) {
20
+ return (<div className={clsx('col-span-2 flex min-w-0 items-center', side === 'start'
21
+ ? 'flex-row-reverse justify-end gap-5 lg:flex-[1.5] lg:gap-7'
22
+ : 'justify-between gap-5 lg:flex-[1.4]')}>
23
+ <dt className="flex min-w-0 flex-col gap-0.5">
24
+ {!!figure.eyebrow && (<span className={clsx('text-[10px] leading-[14px] font-semibold tracking-[0.04em] uppercase', toneMap[tone])}>
25
+ {figure.eyebrow}
26
+ </span>)}
27
+ <span className="text-[13px] leading-[18px] font-semibold text-black dark:text-white">
28
+ {figure.label}
29
+ </span>
30
+ {!!figure.hint && (<span className="text-gray-1 dark:text-gray-2 text-[11px] leading-4">
31
+ {figure.hint}
32
+ </span>)}
33
+ </dt>
34
+ <dd className="shrink-0 text-5xl leading-none font-bold whitespace-nowrap text-black tabular-nums lg:text-[56px] dark:text-white">
35
+ {isLoading ? (<Skeleton shape="rect" className="h-12 w-16"/>) : (figure.value)}
36
+ </dd>
37
+ </div>);
38
+ }
39
+ /**
40
+ * One band with the figures that sum up a list: a large figure at the start,
41
+ * smaller ones in the middle and, at the end, a large one to act on, such as a
42
+ * gap. It goes above the list, in place of a row of `Stat` cards.
43
+ *
44
+ * The band is a description list: each figure is read as its label, then its
45
+ * value. The eyebrows are color plus words, never color alone.
46
+ *
47
+ * Below `lg` it stacks: the lead and the callout take a row each and the
48
+ * smaller figures go two by two between them.
49
+ *
50
+ * Outside an `ExpScope` it falls back to a row of core `Stat` cards, with the
51
+ * eyebrow tone as the stat's dot.
52
+ *
53
+ * @component
54
+ * @example
55
+ * <ExpFigureBand
56
+ * lead={{ value: 38, eyebrow: 'Active coverage', label: 'Repos in the whitelist', hint: '27 enabled' }}
57
+ * figures={[
58
+ * { value: 10, label: 'Indexed', hint: 'Ready for a diagnosis' },
59
+ * { value: 28, label: 'Without a clone', hint: 'They wait for a sync' },
60
+ * ]}
61
+ * callout={{ value: 11, eyebrow: 'Gap to close', label: 'Cases without an indexed repo', tone: 'error' }}
62
+ * />
63
+ *
64
+ * @param {ExpFigureBandProps} props - The properties of the ExpFigureBand component.
65
+ * @param {ExpFigureHighlight} props.lead - The main figure, large, at the start.
66
+ * @param {ExpFigure[]} [props.figures] - Smaller figures, in the middle.
67
+ * @param {ExpFigureHighlight} [props.callout] - A figure to act on, large, at the end.
68
+ * @param {boolean} [props.isLoading=false] - Shows placeholders instead of the values.
69
+ *
70
+ * @returns {ReactNode} The band, or a row of core `Stat` cards outside an `ExpScope`.
71
+ */
72
+ export function ExpFigureBand({ lead, figures = [], callout, isLoading = false, ...restProps }) {
73
+ const inScope = useExpScope();
74
+ if (!inScope) {
75
+ const stats = [
76
+ { ...lead, tone: statTone[lead.tone ?? 'accent'] },
77
+ ...figures.map((figure) => ({ ...figure, tone: 'default' })),
78
+ ...(callout
79
+ ? [{ ...callout, tone: statTone[callout.tone ?? 'error'] }]
80
+ : []),
81
+ ];
82
+ return (<div {...restProps} aria-busy={isLoading || undefined} className={clsx('grid gap-3 sm:grid-cols-2 lg:auto-cols-fr lg:grid-flow-col lg:grid-cols-none', restProps.className)}>
83
+ <Each of={stats} render={(stat) => (<Stat key={stat.label} label={stat.label} value={stat.value} hint={stat.hint} tone={stat.tone} isLoading={isLoading}/>)}/>
84
+ </div>);
85
+ }
86
+ return (<dl {...restProps} data-orion-part="exp-figure-band" aria-busy={isLoading || undefined} className={clsx('border-gray-5 grid grid-cols-2 gap-x-4 gap-y-6 rounded-2xl border bg-white p-5', 'lg:flex lg:items-center lg:gap-6 lg:px-8 lg:py-7', 'dark:border-gray-1 dark:bg-black', restProps.className)}>
87
+ <Highlight figure={lead} tone={lead.tone ?? 'accent'} side="start" isLoading={isLoading}/>
88
+ <Each of={figures} render={(figure) => (<div key={figure.label} className="grid min-w-0 grid-cols-[auto_minmax(0,1fr)] items-baseline gap-x-3 gap-y-1.5 lg:flex-1">
89
+ <dt className="col-start-2 row-start-1 text-[13px] leading-[18px] font-semibold text-black dark:text-white">
90
+ {figure.label}
91
+ </dt>
92
+ <dd className="col-start-1 row-start-1 text-[32px] leading-none font-bold whitespace-nowrap text-black tabular-nums dark:text-white">
93
+ {isLoading ? (<Skeleton shape="rect" className="h-8 w-10"/>) : (figure.value)}
94
+ </dd>
95
+ {!!figure.hint && (<dd className="text-gray-1 dark:text-gray-2 col-span-2 text-[11px] leading-4">
96
+ {figure.hint}
97
+ </dd>)}
98
+ </div>)}/>
99
+ {!!callout && (<Highlight figure={callout} tone={callout.tone ?? 'error'} side="end" isLoading={isLoading}/>)}
100
+ </dl>);
101
+ }
102
+ //# sourceMappingURL=ExpFigureBand.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpFigureBand.jsx","sourceRoot":"","sources":["../../src/expresivo/ExpFigureBand/ExpFigureBand.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './ExpFigureBand';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/expresivo/ExpFigureBand/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './ExpFigureBand';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/expresivo/ExpFigureBand/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
@@ -4,23 +4,34 @@ export type ExpGrowBarProps = {
4
4
  value: number;
5
5
  /** Accessible name of what the bar measures. */
6
6
  ariaLabel: string;
7
+ /** Position between 0 and 100 of a tick across the bar, such as an alert threshold. */
8
+ marker?: number;
7
9
  } & Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'role'>;
8
10
  /**
9
11
  * Progress bar whose fill grows in the clicOH gradient when it mounts. For
10
12
  * scores and shares shown at rest; for an operation that is still running,
11
13
  * use the core `ProgressBar`.
12
14
  *
13
- * Outside an `ExpScope` it falls back to the core `ProgressBar`.
15
+ * A `marker` draws an amber tick across the bar, such as an alert threshold.
16
+ * The tick is decoration: say what it marks in the text next to the bar.
17
+ *
18
+ * Outside an `ExpScope` it falls back to the core `ProgressBar`, without the
19
+ * tick.
14
20
  *
15
21
  * @component
16
22
  * @example
17
23
  * <ExpGrowBar value={57} ariaLabel="Share of cases solved" />
18
24
  *
25
+ * @example
26
+ * // Budget used, with the alert threshold at 80 %
27
+ * <ExpGrowBar value={35} marker={80} ariaLabel="Budget used" className="h-2.5" />
28
+ *
19
29
  * @param {Object} props - The properties of the ExpGrowBar component.
20
30
  * @param {number} props.value - Progress between 0 and 100.
21
31
  * @param {string} props.ariaLabel - Accessible name of what the bar measures.
32
+ * @param {number} [props.marker] - Position between 0 and 100 of an amber tick across the bar.
22
33
  *
23
34
  * @returns {ReactNode} The bar, or a core `ProgressBar` outside an `ExpScope`.
24
35
  */
25
- export declare function ExpGrowBar({ value, ariaLabel, ...restProps }: ExpGrowBarProps): ReactNode;
36
+ export declare function ExpGrowBar({ value, ariaLabel, marker, ...restProps }: ExpGrowBarProps): ReactNode;
26
37
  //# sourceMappingURL=ExpGrowBar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExpGrowBar.d.ts","sourceRoot":"","sources":["../../src/expresivo/ExpGrowBar/ExpGrowBar.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAIf,MAAM,MAAM,eAAe,GAAG;IAC5B,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC;AAI9D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,SAAS,EACT,GAAG,SAAS,EACb,EAAE,eAAe,GAAG,SAAS,CAiC7B"}
1
+ {"version":3,"file":"ExpGrowBar.d.ts","sourceRoot":"","sources":["../../src/expresivo/ExpGrowBar/ExpGrowBar.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAIf,MAAM,MAAM,eAAe,GAAG;IAC5B,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC;AAI9D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,SAAS,EACT,MAAM,EACN,GAAG,SAAS,EACb,EAAE,eAAe,GAAG,SAAS,CAuC7B"}
@@ -9,19 +9,28 @@ const clamp = (value) => Math.min(100, Math.max(0, value));
9
9
  * scores and shares shown at rest; for an operation that is still running,
10
10
  * use the core `ProgressBar`.
11
11
  *
12
- * Outside an `ExpScope` it falls back to the core `ProgressBar`.
12
+ * A `marker` draws an amber tick across the bar, such as an alert threshold.
13
+ * The tick is decoration: say what it marks in the text next to the bar.
14
+ *
15
+ * Outside an `ExpScope` it falls back to the core `ProgressBar`, without the
16
+ * tick.
13
17
  *
14
18
  * @component
15
19
  * @example
16
20
  * <ExpGrowBar value={57} ariaLabel="Share of cases solved" />
17
21
  *
22
+ * @example
23
+ * // Budget used, with the alert threshold at 80 %
24
+ * <ExpGrowBar value={35} marker={80} ariaLabel="Budget used" className="h-2.5" />
25
+ *
18
26
  * @param {Object} props - The properties of the ExpGrowBar component.
19
27
  * @param {number} props.value - Progress between 0 and 100.
20
28
  * @param {string} props.ariaLabel - Accessible name of what the bar measures.
29
+ * @param {number} [props.marker] - Position between 0 and 100 of an amber tick across the bar.
21
30
  *
22
31
  * @returns {ReactNode} The bar, or a core `ProgressBar` outside an `ExpScope`.
23
32
  */
24
- export function ExpGrowBar({ value, ariaLabel, ...restProps }) {
33
+ export function ExpGrowBar({ value, ariaLabel, marker, ...restProps }) {
25
34
  const inScope = useExpScope();
26
35
  const [shown, setShown] = useState(0);
27
36
  const percent = clamp(value);
@@ -32,8 +41,11 @@ export function ExpGrowBar({ value, ariaLabel, ...restProps }) {
32
41
  if (!inScope) {
33
42
  return <ProgressBar {...restProps} value={percent} ariaLabel={ariaLabel}/>;
34
43
  }
35
- return (<div {...restProps} role="progressbar" aria-label={ariaLabel} aria-valuemin={0} aria-valuemax={100} aria-valuenow={percent} className={clsx('bg-gray-5 dark:bg-gray-dark-1 relative h-2 overflow-hidden rounded-full', restProps.className)}>
36
- <span className="from-lavender to-violet absolute inset-y-0 left-0 rounded-full bg-linear-90 transition-[width] duration-900 ease-[cubic-bezier(.22,1,.36,1)] motion-reduce:transition-none" style={{ width: `${shown}%` }}/>
44
+ return (<div {...restProps} role="progressbar" aria-label={ariaLabel} aria-valuemin={0} aria-valuemax={100} aria-valuenow={percent} className={clsx('relative h-2 rounded-full', restProps.className)}>
45
+ <span className="bg-gray-5 dark:bg-gray-dark-1 absolute inset-0 overflow-hidden rounded-full">
46
+ <span className="from-lavender to-violet absolute inset-y-0 left-0 rounded-full bg-linear-90 transition-[width] duration-900 ease-[cubic-bezier(.22,1,.36,1)] motion-reduce:transition-none" style={{ width: `${shown}%` }}/>
47
+ </span>
48
+ {marker !== undefined && (<span aria-hidden="true" className="bg-amber dark:bg-amber-dark absolute -inset-y-1 w-0.5 -translate-x-1/2 rounded-full" style={{ left: `${clamp(marker)}%` }}/>)}
37
49
  </div>);
38
50
  }
39
51
  //# sourceMappingURL=ExpGrowBar.jsx.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExpGrowBar.jsx","sourceRoot":"","sources":["../../src/expresivo/ExpGrowBar/ExpGrowBar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAGL,SAAS,EACT,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AASnD,MAAM,KAAK,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAE3E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,SAAS,EACT,GAAG,SAAS,EACI;IAChB,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAE7B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACtD,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAG,CAAC;IAC9E,CAAC;IAED,OAAO,CACL,CAAC,GAAG,CACF,IAAI,SAAS,CAAC,CACd,IAAI,CAAC,aAAa,CAClB,UAAU,CAAC,CAAC,SAAS,CAAC,CACtB,aAAa,CAAC,CAAC,CAAC,CAAC,CACjB,aAAa,CAAC,CAAC,GAAG,CAAC,CACnB,aAAa,CAAC,CAAC,OAAO,CAAC,CACvB,SAAS,CAAC,CAAC,IAAI,CACb,yEAAyE,EACzE,SAAS,CAAC,SAAS,CACpB,CAAC,CAEF;MAAA,CAAC,IAAI,CACH,SAAS,CAAC,4KAA4K,CACtL,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC,EAElC;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ExpGrowBar.jsx","sourceRoot":"","sources":["../../src/expresivo/ExpGrowBar/ExpGrowBar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAGL,SAAS,EACT,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAWnD,MAAM,KAAK,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,SAAS,EACT,MAAM,EACN,GAAG,SAAS,EACI;IAChB,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAE7B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACtD,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAG,CAAC;IAC9E,CAAC;IAED,OAAO,CACL,CAAC,GAAG,CACF,IAAI,SAAS,CAAC,CACd,IAAI,CAAC,aAAa,CAClB,UAAU,CAAC,CAAC,SAAS,CAAC,CACtB,aAAa,CAAC,CAAC,CAAC,CAAC,CACjB,aAAa,CAAC,CAAC,GAAG,CAAC,CACnB,aAAa,CAAC,CAAC,OAAO,CAAC,CACvB,SAAS,CAAC,CAAC,IAAI,CAAC,2BAA2B,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAElE;MAAA,CAAC,IAAI,CAAC,SAAS,CAAC,6EAA6E,CAC3F;QAAA,CAAC,IAAI,CACH,SAAS,CAAC,4KAA4K,CACtL,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC,EAElC;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,MAAM,KAAK,SAAS,IAAI,CACvB,CAAC,IAAI,CACH,WAAW,CAAC,MAAM,CAClB,SAAS,CAAC,qFAAqF,CAC/F,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EACrC,CACH,CACH;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC"}
@@ -9,6 +9,9 @@ export type ExpRepoAvatarProps = {
9
9
  * Little creature that stands for a repository next to its name. Decorative:
10
10
  * always `aria-hidden`, so the repo name next to it carries the meaning.
11
11
  *
12
+ * The drawings carry their own margin: no padding, circle or background around
13
+ * them. Under 20px they no longer read; there, show only the name.
14
+ *
12
15
  * Outside an `ExpScope`, or with `mascots="hidden"`, it renders nothing.
13
16
  *
14
17
  * @component
@@ -1 +1 @@
1
- {"version":3,"file":"ExpRepoAvatar.d.ts","sourceRoot":"","sources":["../../src/expresivo/ExpRepoAvatar/ExpRepoAvatar.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,EAAE,KAAK,iBAAiB,EAAqB,MAAM,WAAW,CAAC;AAEtE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,iBAAiB,CAAC;IACxB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC,CAAC;AAEtD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,IAAS,EACT,GAAG,SAAS,EACb,EAAE,kBAAkB,GAAG,SAAS,CAqBhC"}
1
+ {"version":3,"file":"ExpRepoAvatar.d.ts","sourceRoot":"","sources":["../../src/expresivo/ExpRepoAvatar/ExpRepoAvatar.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,EAAE,KAAK,iBAAiB,EAAqB,MAAM,WAAW,CAAC;AAEtE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,iBAAiB,CAAC;IACxB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,IAAS,EACT,GAAG,SAAS,EACb,EAAE,kBAAkB,GAAG,SAAS,CAqBhC"}
@@ -6,6 +6,9 @@ import { repoAvatarCatalog } from './catalog';
6
6
  * Little creature that stands for a repository next to its name. Decorative:
7
7
  * always `aria-hidden`, so the repo name next to it carries the meaning.
8
8
  *
9
+ * The drawings carry their own margin: no padding, circle or background around
10
+ * them. Under 20px they no longer read; there, show only the name.
11
+ *
9
12
  * Outside an `ExpScope`, or with `mascots="hidden"`, it renders nothing.
10
13
  *
11
14
  * @component
@@ -1 +1 @@
1
- {"version":3,"file":"ExpRepoAvatar.jsx","sourceRoot":"","sources":["../../src/expresivo/ExpRepoAvatar/ExpRepoAvatar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAA0B,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAQtE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,IAAI,EACJ,IAAI,GAAG,EAAE,EACT,GAAG,SAAS,EACO;IACnB,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IAErC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE1D,OAAO,CACL,CAAC,IAAI,CACH,IAAI,SAAS,CAAC,CACd,WAAW,CAAC,MAAM,CAClB,SAAS,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAE7D;MAAA,CAAC,GAAG,CACF,GAAG,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CACjC,GAAG,CAAC,EAAE,CACN,KAAK,CAAC,CAAC,IAAI,CAAC,CACZ,MAAM,CAAC,CAAC,IAAI,CAAC,CACb,SAAS,CAAC,CAAC,KAAK,CAAC,CACjB,SAAS,CAAC,sBAAsB,EAEpC;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ExpRepoAvatar.jsx","sourceRoot":"","sources":["../../src/expresivo/ExpRepoAvatar/ExpRepoAvatar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAA0B,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAQtE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,IAAI,EACJ,IAAI,GAAG,EAAE,EACT,GAAG,SAAS,EACO;IACnB,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IAErC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE1D,OAAO,CACL,CAAC,IAAI,CACH,IAAI,SAAS,CAAC,CACd,WAAW,CAAC,MAAM,CAClB,SAAS,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAE7D;MAAA,CAAC,GAAG,CACF,GAAG,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CACjC,GAAG,CAAC,EAAE,CACN,KAAK,CAAC,CAAC,IAAI,CAAC,CACZ,MAAM,CAAC,CAAC,IAAI,CAAC,CACb,SAAS,CAAC,CAAC,KAAK,CAAC,CACjB,SAAS,CAAC,sBAAsB,EAEpC;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC"}
@@ -1,6 +1,10 @@
1
1
  import type { StaticImageData } from 'next/image';
2
2
  /** Repo avatars, named after the drawing like their files. Which repo gets which one is the consumer's call. */
3
- export type ExpRepoAvatarName = 'pulpo' | 'pulpo-lentes' | 'pulpo-verde' | 'cohete' | 'dino' | 'caja' | 'caja-chispa';
4
- /** PNGs about 60px wide: sharp up to 30px on high-density screens. */
3
+ export type ExpRepoAvatarName = 'pulpo' | 'pulpo-lentes' | 'pulpo-verde' | 'cohete' | 'dino' | 'caja' | 'caja-chispa' | 'pulpo-morado' | 'robot-lente' | 'edificio-cupulas' | 'globo-anillo' | 'caja-ruedas' | 'cubo-morado' | 'dino-placas-azules' | 'criatura-tres-ojos' | 'cohete-azul' | 'dino-placas-amarillas' | 'cubo-brazos' | 'ventana-codigo';
4
+ /**
5
+ * The first seven are PNGs about 60px wide, sharp up to 30px on high-density
6
+ * screens. The rest are SVGs drawn to read at 24px and sharp at any size;
7
+ * `ventana-codigo` is the neutral one for a repo without a drawing of its own.
8
+ */
5
9
  export declare const repoAvatarCatalog: Record<ExpRepoAvatarName, StaticImageData>;
6
10
  //# sourceMappingURL=catalog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/expresivo/ExpRepoAvatar/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AASlD,gHAAgH;AAChH,MAAM,MAAM,iBAAiB,GACzB,OAAO,GACP,cAAc,GACd,aAAa,GACb,QAAQ,GACR,MAAM,GACN,MAAM,GACN,aAAa,CAAC;AAElB,sEAAsE;AACtE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAQxE,CAAC"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/expresivo/ExpRepoAvatar/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAqBlD,gHAAgH;AAChH,MAAM,MAAM,iBAAiB,GACzB,OAAO,GACP,cAAc,GACd,aAAa,GACb,QAAQ,GACR,MAAM,GACN,MAAM,GACN,aAAa,GACb,cAAc,GACd,aAAa,GACb,kBAAkB,GAClB,cAAc,GACd,aAAa,GACb,aAAa,GACb,oBAAoB,GACpB,oBAAoB,GACpB,aAAa,GACb,uBAAuB,GACvB,aAAa,GACb,gBAAgB,CAAC;AAErB;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAoBxE,CAAC"}
@@ -1,11 +1,27 @@
1
1
  import cajaChispa from '@clicoh/orion-library/assets/avatares/caja-chispa.png';
2
+ import cajaRuedas from '@clicoh/orion-library/assets/avatares/caja-ruedas.svg';
2
3
  import caja from '@clicoh/orion-library/assets/avatares/caja.png';
4
+ import coheteAzul from '@clicoh/orion-library/assets/avatares/cohete-azul.svg';
3
5
  import cohete from '@clicoh/orion-library/assets/avatares/cohete.png';
6
+ import criaturaTresOjos from '@clicoh/orion-library/assets/avatares/criatura-tres-ojos.svg';
7
+ import cuboBrazos from '@clicoh/orion-library/assets/avatares/cubo-brazos.svg';
8
+ import cuboMorado from '@clicoh/orion-library/assets/avatares/cubo-morado.svg';
9
+ import dinoPlacasAmarillas from '@clicoh/orion-library/assets/avatares/dino-placas-amarillas.svg';
10
+ import dinoPlacasAzules from '@clicoh/orion-library/assets/avatares/dino-placas-azules.svg';
4
11
  import dino from '@clicoh/orion-library/assets/avatares/dino.png';
12
+ import edificioCupulas from '@clicoh/orion-library/assets/avatares/edificio-cupulas.svg';
13
+ import globoAnillo from '@clicoh/orion-library/assets/avatares/globo-anillo.svg';
5
14
  import pulpoLentes from '@clicoh/orion-library/assets/avatares/pulpo-lentes.png';
15
+ import pulpoMorado from '@clicoh/orion-library/assets/avatares/pulpo-morado.svg';
6
16
  import pulpoVerde from '@clicoh/orion-library/assets/avatares/pulpo-verde.png';
7
17
  import pulpo from '@clicoh/orion-library/assets/avatares/pulpo.png';
8
- /** PNGs about 60px wide: sharp up to 30px on high-density screens. */
18
+ import robotLente from '@clicoh/orion-library/assets/avatares/robot-lente.svg';
19
+ import ventanaCodigo from '@clicoh/orion-library/assets/avatares/ventana-codigo.svg';
20
+ /**
21
+ * The first seven are PNGs about 60px wide, sharp up to 30px on high-density
22
+ * screens. The rest are SVGs drawn to read at 24px and sharp at any size;
23
+ * `ventana-codigo` is the neutral one for a repo without a drawing of its own.
24
+ */
9
25
  export const repoAvatarCatalog = {
10
26
  pulpo,
11
27
  'pulpo-lentes': pulpoLentes,
@@ -14,5 +30,17 @@ export const repoAvatarCatalog = {
14
30
  dino,
15
31
  caja,
16
32
  'caja-chispa': cajaChispa,
33
+ 'pulpo-morado': pulpoMorado,
34
+ 'robot-lente': robotLente,
35
+ 'edificio-cupulas': edificioCupulas,
36
+ 'globo-anillo': globoAnillo,
37
+ 'caja-ruedas': cajaRuedas,
38
+ 'cubo-morado': cuboMorado,
39
+ 'dino-placas-azules': dinoPlacasAzules,
40
+ 'criatura-tres-ojos': criaturaTresOjos,
41
+ 'cohete-azul': coheteAzul,
42
+ 'dino-placas-amarillas': dinoPlacasAmarillas,
43
+ 'cubo-brazos': cuboBrazos,
44
+ 'ventana-codigo': ventanaCodigo,
17
45
  };
18
46
  //# sourceMappingURL=catalog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/expresivo/ExpRepoAvatar/catalog.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,uDAAuD,CAAC;AAC/E,OAAO,IAAI,MAAM,gDAAgD,CAAC;AAClE,OAAO,MAAM,MAAM,kDAAkD,CAAC;AACtE,OAAO,IAAI,MAAM,gDAAgD,CAAC;AAClE,OAAO,WAAW,MAAM,wDAAwD,CAAC;AACjF,OAAO,UAAU,MAAM,uDAAuD,CAAC;AAC/E,OAAO,KAAK,MAAM,iDAAiD,CAAC;AAYpE,sEAAsE;AACtE,MAAM,CAAC,MAAM,iBAAiB,GAA+C;IAC3E,KAAK;IACL,cAAc,EAAE,WAAW;IAC3B,aAAa,EAAE,UAAU;IACzB,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,aAAa,EAAE,UAAU;CAC1B,CAAC"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/expresivo/ExpRepoAvatar/catalog.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,uDAAuD,CAAC;AAC/E,OAAO,UAAU,MAAM,uDAAuD,CAAC;AAC/E,OAAO,IAAI,MAAM,gDAAgD,CAAC;AAClE,OAAO,UAAU,MAAM,uDAAuD,CAAC;AAC/E,OAAO,MAAM,MAAM,kDAAkD,CAAC;AACtE,OAAO,gBAAgB,MAAM,8DAA8D,CAAC;AAC5F,OAAO,UAAU,MAAM,uDAAuD,CAAC;AAC/E,OAAO,UAAU,MAAM,uDAAuD,CAAC;AAC/E,OAAO,mBAAmB,MAAM,iEAAiE,CAAC;AAClG,OAAO,gBAAgB,MAAM,8DAA8D,CAAC;AAC5F,OAAO,IAAI,MAAM,gDAAgD,CAAC;AAClE,OAAO,eAAe,MAAM,4DAA4D,CAAC;AACzF,OAAO,WAAW,MAAM,wDAAwD,CAAC;AACjF,OAAO,WAAW,MAAM,wDAAwD,CAAC;AACjF,OAAO,WAAW,MAAM,wDAAwD,CAAC;AACjF,OAAO,UAAU,MAAM,uDAAuD,CAAC;AAC/E,OAAO,KAAK,MAAM,iDAAiD,CAAC;AACpE,OAAO,UAAU,MAAM,uDAAuD,CAAC;AAC/E,OAAO,aAAa,MAAM,0DAA0D,CAAC;AAwBrF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA+C;IAC3E,KAAK;IACL,cAAc,EAAE,WAAW;IAC3B,aAAa,EAAE,UAAU;IACzB,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,aAAa,EAAE,UAAU;IACzB,cAAc,EAAE,WAAW;IAC3B,aAAa,EAAE,UAAU;IACzB,kBAAkB,EAAE,eAAe;IACnC,cAAc,EAAE,WAAW;IAC3B,aAAa,EAAE,UAAU;IACzB,aAAa,EAAE,UAAU;IACzB,oBAAoB,EAAE,gBAAgB;IACtC,oBAAoB,EAAE,gBAAgB;IACtC,aAAa,EAAE,UAAU;IACzB,uBAAuB,EAAE,mBAAmB;IAC5C,aAAa,EAAE,UAAU;IACzB,gBAAgB,EAAE,aAAa;CAChC,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { HTMLAttributes, ReactNode } from 'react';
2
+ /** One column of the card: its accessible name and what goes in it. */
3
+ export type ExpSplitCardColumn = {
4
+ label: string;
5
+ content: ReactNode;
6
+ };
7
+ export type ExpSplitCardProps = {
8
+ /** The columns, in order. The first one is a little wider. */
9
+ columns: ExpSplitCardColumn[];
10
+ } & Omit<HTMLAttributes<HTMLDivElement>, 'children'>;
11
+ /**
12
+ * One card split into columns by thin dividers, with the brand band along the
13
+ * top. For a few summaries that read together, such as a score, a budget and
14
+ * the goals, in place of a row of separate cards.
15
+ *
16
+ * Each column is a `section` named by its `label`. From `lg` the columns sit
17
+ * side by side and the first one is a little wider; below, they stack with a
18
+ * divider between them.
19
+ *
20
+ * Outside an `ExpScope` it falls back to a row of core `Card`s, one per column.
21
+ *
22
+ * @component
23
+ * @example
24
+ * <ExpSplitCard
25
+ * columns={[
26
+ * { label: 'Score', content: <ScoreSummary /> },
27
+ * { label: 'Budget', content: <BudgetSummary /> },
28
+ * { label: 'Goals', content: <GoalList /> },
29
+ * ]}
30
+ * />
31
+ *
32
+ * @param {Object} props - The properties of the ExpSplitCard component.
33
+ * @param {ExpSplitCardColumn[]} props.columns - The columns, each with its `label` and `content`.
34
+ *
35
+ * @returns {ReactNode} The card, or a row of core `Card`s outside an `ExpScope`.
36
+ */
37
+ export declare function ExpSplitCard({ columns, ...restProps }: ExpSplitCardProps): ReactNode;
38
+ //# sourceMappingURL=ExpSplitCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpSplitCard.d.ts","sourceRoot":"","sources":["../../src/expresivo/ExpSplitCard/ExpSplitCard.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvD,uEAAuE;AACvE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,8DAA8D;IAC9D,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,GAAG,SAAS,EACb,EAAE,iBAAiB,GAAG,SAAS,CAyD/B"}
@@ -0,0 +1,48 @@
1
+ 'use client';
2
+ import { Card, Each } from '@clicoh/orion-library';
3
+ import clsx from 'clsx';
4
+ import { useExpScope } from '../ExpScope/ExpScope';
5
+ /**
6
+ * One card split into columns by thin dividers, with the brand band along the
7
+ * top. For a few summaries that read together, such as a score, a budget and
8
+ * the goals, in place of a row of separate cards.
9
+ *
10
+ * Each column is a `section` named by its `label`. From `lg` the columns sit
11
+ * side by side and the first one is a little wider; below, they stack with a
12
+ * divider between them.
13
+ *
14
+ * Outside an `ExpScope` it falls back to a row of core `Card`s, one per column.
15
+ *
16
+ * @component
17
+ * @example
18
+ * <ExpSplitCard
19
+ * columns={[
20
+ * { label: 'Score', content: <ScoreSummary /> },
21
+ * { label: 'Budget', content: <BudgetSummary /> },
22
+ * { label: 'Goals', content: <GoalList /> },
23
+ * ]}
24
+ * />
25
+ *
26
+ * @param {Object} props - The properties of the ExpSplitCard component.
27
+ * @param {ExpSplitCardColumn[]} props.columns - The columns, each with its `label` and `content`.
28
+ *
29
+ * @returns {ReactNode} The card, or a row of core `Card`s outside an `ExpScope`.
30
+ */
31
+ export function ExpSplitCard({ columns, ...restProps }) {
32
+ const inScope = useExpScope();
33
+ if (!inScope) {
34
+ return (<div {...restProps} className={clsx('grid grid-cols-1 gap-4 lg:auto-cols-fr lg:grid-flow-col', restProps.className)}>
35
+ <Each of={columns} render={(column) => (<Card key={column.label} as="section" aria-label={column.label} className="min-w-0">
36
+ {column.content}
37
+ </Card>)}/>
38
+ </div>);
39
+ }
40
+ return (<div {...restProps} data-orion-part="exp-split-card" className={clsx('flex flex-col overflow-hidden rounded-2xl border pt-1 text-black lg:flex-row dark:text-white', restProps.className)}>
41
+ <Each of={columns} render={(column, index) => (<section key={column.label} aria-label={column.label} className={clsx('border-gray-5 dark:border-gray-1 flex min-w-0 flex-col justify-center gap-3 px-6 py-6 lg:px-8 lg:py-7', index === 0
42
+ ? 'lg:flex-[1.15]'
43
+ : 'border-t lg:flex-1 lg:border-t-0 lg:border-l')}>
44
+ {column.content}
45
+ </section>)}/>
46
+ </div>);
47
+ }
48
+ //# sourceMappingURL=ExpSplitCard.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpSplitCard.jsx","sourceRoot":"","sources":["../../src/expresivo/ExpSplitCard/ExpSplitCard.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAanD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,OAAO,EACP,GAAG,SAAS,EACM;IAClB,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAE9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CACL,CAAC,GAAG,CACF,IAAI,SAAS,CAAC,CACd,SAAS,CAAC,CAAC,IAAI,CACb,yDAAyD,EACzD,SAAS,CAAC,SAAS,CACpB,CAAC,CAEF;QAAA,CAAC,IAAI,CACH,EAAE,CAAC,CAAC,OAAO,CAAC,CACZ,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAClB,CAAC,IAAI,CACH,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAClB,EAAE,CAAC,SAAS,CACZ,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACzB,SAAS,CAAC,SAAS,CAEnB;cAAA,CAAC,MAAM,CAAC,OAAO,CACjB;YAAA,EAAE,IAAI,CAAC,CACR,CAAC,EAEN;MAAA,EAAE,GAAG,CAAC,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,CAAC,GAAG,CACF,IAAI,SAAS,CAAC,CACd,eAAe,CAAC,gBAAgB,CAChC,SAAS,CAAC,CAAC,IAAI,CACb,8FAA8F,EAC9F,SAAS,CAAC,SAAS,CACpB,CAAC,CAEF;MAAA,CAAC,IAAI,CACH,EAAE,CAAC,CAAC,OAAO,CAAC,CACZ,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACzB,CAAC,OAAO,CACN,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAClB,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACzB,SAAS,CAAC,CAAC,IAAI,CACb,uGAAuG,EACvG,KAAK,KAAK,CAAC;gBACT,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,8CAA8C,CACnD,CAAC,CAEF;YAAA,CAAC,MAAM,CAAC,OAAO,CACjB;UAAA,EAAE,OAAO,CAAC,CACX,CAAC,EAEN;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './ExpSplitCard';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/expresivo/ExpSplitCard/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './ExpSplitCard';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/expresivo/ExpSplitCard/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { HTMLAttributes, ReactNode } from 'react';
2
+ export type ExpStatusTagModifier = 'success' | 'warning' | 'error' | 'info' | 'progress' | 'disabled';
3
+ export type ExpStatusTagProps = {
4
+ modifier: ExpStatusTagModifier;
5
+ children: ReactNode;
6
+ } & Omit<HTMLAttributes<HTMLSpanElement>, 'children'>;
7
+ /**
8
+ * Status as a flat tinted tag with a thick bar on its left edge, for a status
9
+ * column in a table where a row of outlined badges reads too busy. Same status
10
+ * modifiers as the core `Badge`; the label carries the message.
11
+ *
12
+ * Outside an `ExpScope` it falls back to the core `Badge` with the same
13
+ * `modifier`.
14
+ *
15
+ * @component
16
+ * @example
17
+ * <ExpStatusTag modifier="success">Synced</ExpStatusTag>
18
+ *
19
+ * @param {ExpStatusTagProps} props - The properties of the ExpStatusTag component.
20
+ * @param {'success' | 'warning' | 'error' | 'info' | 'progress' | 'disabled'} props.modifier - Status color.
21
+ * @param {ReactNode} props.children - Label of the status.
22
+ *
23
+ * @returns {ReactNode} The tag, or a core `Badge` outside an `ExpScope`.
24
+ */
25
+ export declare function ExpStatusTag({ modifier, children, ...restProps }: ExpStatusTagProps): ReactNode;
26
+ //# sourceMappingURL=ExpStatusTag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpStatusTag.d.ts","sourceRoot":"","sources":["../../src/expresivo/ExpStatusTag/ExpStatusTag.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvD,MAAM,MAAM,oBAAoB,GAC5B,SAAS,GACT,SAAS,GACT,OAAO,GACP,MAAM,GACN,UAAU,GACV,UAAU,CAAC;AAEf,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC,CAAC;AAkBtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,QAAQ,EACR,GAAG,SAAS,EACb,EAAE,iBAAiB,GAAG,SAAS,CAuB/B"}
@@ -0,0 +1,44 @@
1
+ 'use client';
2
+ import { Badge } from '@clicoh/orion-library';
3
+ import clsx from 'clsx';
4
+ import { useExpScope } from '../ExpScope/ExpScope';
5
+ // The label takes the strong shade: the base `warning` and `success` hues sit
6
+ // below 4.5:1 on their tint.
7
+ const colorMap = {
8
+ success: 'border-success bg-success-1 text-success-strong dark:bg-success/16 dark:text-success',
9
+ warning: 'border-amber bg-warning-1 text-amber-strong dark:bg-warning/16 dark:text-amber',
10
+ error: 'border-error bg-error-1 text-error-strong dark:bg-error/16 dark:text-error',
11
+ info: 'border-info bg-info-1 text-info-dark-3 dark:bg-info/16 dark:text-info',
12
+ progress: 'border-lavender bg-lavender-2 text-lavender dark:bg-lavender/18 dark:text-lavender',
13
+ disabled: 'border-gray-1 bg-gray-6 text-gray-1 dark:border-gray-2 dark:bg-gray-2/16 dark:text-gray-2',
14
+ };
15
+ /**
16
+ * Status as a flat tinted tag with a thick bar on its left edge, for a status
17
+ * column in a table where a row of outlined badges reads too busy. Same status
18
+ * modifiers as the core `Badge`; the label carries the message.
19
+ *
20
+ * Outside an `ExpScope` it falls back to the core `Badge` with the same
21
+ * `modifier`.
22
+ *
23
+ * @component
24
+ * @example
25
+ * <ExpStatusTag modifier="success">Synced</ExpStatusTag>
26
+ *
27
+ * @param {ExpStatusTagProps} props - The properties of the ExpStatusTag component.
28
+ * @param {'success' | 'warning' | 'error' | 'info' | 'progress' | 'disabled'} props.modifier - Status color.
29
+ * @param {ReactNode} props.children - Label of the status.
30
+ *
31
+ * @returns {ReactNode} The tag, or a core `Badge` outside an `ExpScope`.
32
+ */
33
+ export function ExpStatusTag({ modifier, children, ...restProps }) {
34
+ const inScope = useExpScope();
35
+ if (!inScope) {
36
+ return (<Badge {...restProps} modifier={modifier}>
37
+ {children}
38
+ </Badge>);
39
+ }
40
+ return (<span {...restProps} className={clsx('inline-flex items-center rounded-[3px_8px_8px_3px] border-l-3 px-2.5 py-1 text-xs leading-4 font-semibold whitespace-nowrap', colorMap[modifier], restProps.className)}>
41
+ {children}
42
+ </span>);
43
+ }
44
+ //# sourceMappingURL=ExpStatusTag.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpStatusTag.jsx","sourceRoot":"","sources":["../../src/expresivo/ExpStatusTag/ExpStatusTag.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAenD,8EAA8E;AAC9E,6BAA6B;AAC7B,MAAM,QAAQ,GAAyC;IACrD,OAAO,EACL,sFAAsF;IACxF,OAAO,EACL,gFAAgF;IAClF,KAAK,EACH,4EAA4E;IAC9E,IAAI,EAAE,uEAAuE;IAC7E,QAAQ,EACN,oFAAoF;IACtF,QAAQ,EACN,2FAA2F;CAC9F,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,QAAQ,EACR,GAAG,SAAS,EACM;IAClB,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAE9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CACL,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACvC;QAAA,CAAC,QAAQ,CACX;MAAA,EAAE,KAAK,CAAC,CACT,CAAC;IACJ,CAAC;IAED,OAAO,CACL,CAAC,IAAI,CACH,IAAI,SAAS,CAAC,CACd,SAAS,CAAC,CAAC,IAAI,CACb,6HAA6H,EAC7H,QAAQ,CAAC,QAAQ,CAAC,EAClB,SAAS,CAAC,SAAS,CACpB,CAAC,CAEF;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './ExpStatusTag';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/expresivo/ExpStatusTag/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './ExpStatusTag';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/expresivo/ExpStatusTag/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -19,4 +19,9 @@ export * from './ExpSearchField';
19
19
  export * from './ExpLadder';
20
20
  export * from './ExpRepoAvatar';
21
21
  export * from './ExpStatIcon';
22
+ export * from './ExpFigureBand';
23
+ export * from './ExpSplitCard';
24
+ export * from './ExpStatusTag';
25
+ export * from './ExpCodeHostIcon';
26
+ export * from './ExpAccentNote';
22
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/expresivo/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/expresivo/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
@@ -19,4 +19,9 @@ export * from './ExpSearchField';
19
19
  export * from './ExpLadder';
20
20
  export * from './ExpRepoAvatar';
21
21
  export * from './ExpStatIcon';
22
+ export * from './ExpFigureBand';
23
+ export * from './ExpSplitCard';
24
+ export * from './ExpStatusTag';
25
+ export * from './ExpCodeHostIcon';
26
+ export * from './ExpAccentNote';
22
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/expresivo/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/expresivo/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@clicoh/orion-library",
3
- "version": "1.2.0-beta.21",
3
+ "version": "1.2.0-beta.23",
4
4
  "main": "index.js",
5
5
  "dependencies": {
6
6
  "@floating-ui/react": "0.26.19",
7
7
  "clsx": "2.1.1",
8
8
  "leaflet": "^1.9.4",
9
9
  "next": "16.3.8",
10
+ "pdfjs-dist": "6.4.299",
10
11
  "react": "19.2.6",
11
12
  "react-dom": "19.2.6",
12
13
  "react-icons": "5.2.1",