@decoda-ui/web 0.0.0-stage → 0.1.1

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.
@@ -0,0 +1,3 @@
1
+ var button = {"root":"dui_Button-module__root__CbGH4","primary":"dui_Button-module__primary__CQ8bX","secondary":"dui_Button-module__secondary__wviPm","ghost":"dui_Button-module__ghost__2oIHL","destructive":"dui_Button-module__destructive__DHvi7","small":"dui_Button-module__small__5NNzM","medium":"dui_Button-module__medium__a-asN","large":"dui_Button-module__large__h29o-"};
2
+
3
+ export { button as default };
@@ -0,0 +1,3 @@
1
+ var card = {"root":"dui_Card-module__root__iRlmZ"};
2
+
3
+ export { card as default };
@@ -0,0 +1,3 @@
1
+ var catalog = {"stack":"dui_Catalog-module__stack__rChQJ","row":"dui_Catalog-module__row__xLx-P","grid":"dui_Catalog-module__grid__2rCan","label":"dui_Catalog-module__label__V1yxt","hint":"dui_Catalog-module__hint__mppWN","field":"dui_Catalog-module__field__vL57B","select":"dui_Catalog-module__select__mPh7s dui_Catalog-module__field__vL57B","check":"dui_Catalog-module__check__8wWll","radio":"dui_Catalog-module__radio__oE5-J","switch":"dui_Catalog-module__switch__-ZBy3","iconButton":"dui_Catalog-module__iconButton__c612U","tab":"dui_Catalog-module__tab__vDTnc","invalid":"dui_Catalog-module__invalid__5gd31","error":"dui_Catalog-module__error__msJNX","choice":"dui_Catalog-module__choice__uMRGN","tabs":"dui_Catalog-module__tabs__2BA7V","tabActive":"dui_Catalog-module__tabActive__fPMBa","tabPill":"dui_Catalog-module__tabPill__RUW1u","icon":"dui_Catalog-module__icon__AJg25","avatar":"dui_Catalog-module__avatar__seEYl","badge":"dui_Catalog-module__badge__KJep6","badgeSuccess":"dui_Catalog-module__badgeSuccess__F60aF","badgeWarning":"dui_Catalog-module__badgeWarning__bjkmd","metricLabel":"dui_Catalog-module__metricLabel__aVoG5","metricValue":"dui_Catalog-module__metricValue__EFR2u","summaryCard":"dui_Catalog-module__summaryCard__O44Sm","metricNote":"dui_Catalog-module__metricNote__5Xq3Z","summaryMain":"dui_Catalog-module__summaryMain__CGt3k","summaryColumn":"dui_Catalog-module__summaryColumn__xT-8Q","summaryTitle":"dui_Catalog-module__summaryTitle__1KAfg","summarySpent":"dui_Catalog-module__summarySpent__KupfN","summarySpentValue":"dui_Catalog-module__summarySpentValue__cYCxD","summaryFooter":"dui_Catalog-module__summaryFooter__uXYlh","summaryTopline":"dui_Catalog-module__summaryTopline__guFnA","summaryChartHeading":"dui_Catalog-module__summaryChartHeading__51mke","pageHeading":"dui_Catalog-module__pageHeading__f79eD","pageTitle":"dui_Catalog-module__pageTitle__IGwN-","callout":"dui_Catalog-module__callout__BPScX","chartCard":"dui_Catalog-module__chartCard__Gxo6d","cifraNav":"dui_Catalog-module__cifraNav__E09ha","cifraNavTabs":"dui_Catalog-module__cifraNavTabs__jrF9l","eyebrow":"dui_Catalog-module__eyebrow__XEzqz","calloutSuccess":"dui_Catalog-module__calloutSuccess__5t0FQ","tableWrap":"dui_Catalog-module__tableWrap__RI-0b","table":"dui_Catalog-module__table__0iTne","numeric":"dui_Catalog-module__numeric__KjeSJ","status":"dui_Catalog-module__status__6zORi","statusPending":"dui_Catalog-module__statusPending__76Tkt","spinner":"dui_Catalog-module__spinner__2PSZp","dui-spin":"dui_Catalog-module__dui-spin__KdEdK","skeleton":"dui_Catalog-module__skeleton__T9pSY","dui-shimmer":"dui_Catalog-module__dui-shimmer__yBnX-","dialogBackdrop":"dui_Catalog-module__dialogBackdrop__snQ8t","dialog":"dui_Catalog-module__dialog__h5uNq","sheet":"dui_Catalog-module__sheet__aht46","dialogTitle":"dui_Catalog-module__dialogTitle__8QxO7","dialogActions":"dui_Catalog-module__dialogActions__Sp14s","sheetHandle":"dui_Catalog-module__sheetHandle__gGGA3","chartReading":"dui_Catalog-module__chartReading__gJu1J","chartReadingValue":"dui_Catalog-module__chartReadingValue__1IM0x","chartAxis":"dui_Catalog-module__chartAxis__UW0Id","stackedBar":"dui_Catalog-module__stackedBar__7At1p","stackedSegment":"dui_Catalog-module__stackedSegment__FaQwj","monthlyBars":"dui_Catalog-module__monthlyBars__uZngI","monthlyBar":"dui_Catalog-module__monthlyBar__ISmMb","monthlyBarFill":"dui_Catalog-module__monthlyBarFill__5hYQ5","monthlyBarTick":"dui_Catalog-module__monthlyBarTick__sHKNC","chartState":"dui_Catalog-module__chartState__1OHWg","chartInteractive":"dui_Catalog-module__chartInteractive__5IYhQ","sparkDot":"dui_Catalog-module__sparkDot__OtXXW","chartLegend":"dui_Catalog-module__chartLegend__TUJRd","annualBar":"dui_Catalog-module__annualBar__zkTiD","annualBilledHit":"dui_Catalog-module__annualBilledHit__vSmlF","annualSpentHit":"dui_Catalog-module__annualSpentHit__-iEtu","annualBarDetail":"dui_Catalog-module__annualBarDetail__53s7V","chartKey":"dui_Catalog-module__chartKey__9vf8e","chartKeyDashed":"dui_Catalog-module__chartKeyDashed__b1-ps"};
2
+
3
+ export { catalog as default };
@@ -0,0 +1,3 @@
1
+ var shareBar = {"track":"dui_ShareBar-module__track__sqVsW","fill":"dui_ShareBar-module__fill__klcFo","covered":"dui_ShareBar-module__covered__T8yfR","tick":"dui_ShareBar-module__tick__eVgaz"};
2
+
3
+ export { shareBar as default };
@@ -0,0 +1,13 @@
1
+ export type ChartPoint = readonly [x: number, y: number];
2
+ /** Fit values into a fixed SVG viewBox while reserving time after the latest datum. */
3
+ export declare function chartPoints(values: readonly number[], { span, min, max, width, height }?: {
4
+ span?: number;
5
+ min?: number;
6
+ max?: number;
7
+ width?: number;
8
+ height?: number;
9
+ }): ChartPoint[];
10
+ /** Normalise two currencies independently when no conversion rate is known. */
11
+ export declare function shareOfFinal(values: readonly number[]): number[];
12
+ /** Monotone cubic interpolation: a cumulative series never visually overshoots. */
13
+ export declare function smoothChartPath(points: readonly ChartPoint[]): string;
package/dist/chart.js ADDED
@@ -0,0 +1,45 @@
1
+ /** Fit values into a fixed SVG viewBox while reserving time after the latest datum. */
2
+ function chartPoints(values, { span = values.length, min = 0, max = Math.max(0, ...values), width = 100, height = 32 } = {}) {
3
+ const domain = max - min || 1;
4
+ const last = Math.max(1, span - 1, values.length - 1);
5
+ return values.map((value, index) => [
6
+ (index / last) * width,
7
+ height - 1 - ((value - min) / domain) * (height - 2)
8
+ ]);
9
+ }
10
+ /** Normalise two currencies independently when no conversion rate is known. */
11
+ function shareOfFinal(values) {
12
+ const final = values[values.length - 1] ?? 0;
13
+ return values.map((value) => final > 0 ? value / final : 0);
14
+ }
15
+ /** Monotone cubic interpolation: a cumulative series never visually overshoots. */
16
+ function smoothChartPath(points) {
17
+ const format = (value) => value.toFixed(2);
18
+ if (points.length === 0)
19
+ return '';
20
+ if (points.length < 3)
21
+ return points.map(([x, y], index) => `${index ? 'L' : 'M'}${format(x)},${format(y)}`).join(' ');
22
+ const dx = points.slice(1).map(([x], index) => x - points[index][0]);
23
+ const slopes = points.slice(1).map(([, y], index) => (y - points[index][1]) / dx[index]);
24
+ const tangents = points.map((_, index) => {
25
+ if (index === 0)
26
+ return slopes[0];
27
+ if (index === points.length - 1)
28
+ return slopes[slopes.length - 1];
29
+ const before = slopes[index - 1];
30
+ const after = slopes[index];
31
+ return before * after <= 0 ? 0 : 3 * (dx[index - 1] + dx[index]) /
32
+ ((2 * dx[index] + dx[index - 1]) / before + (dx[index] + 2 * dx[index - 1]) / after);
33
+ });
34
+ let path = `M${format(points[0][0])},${format(points[0][1])}`;
35
+ for (let index = 0; index < points.length - 1; index++) {
36
+ const [x0, y0] = points[index];
37
+ const [x1, y1] = points[index + 1];
38
+ const handle = dx[index] / 3;
39
+ path += ` C${format(x0 + handle)},${format(y0 + tangents[index] * handle)} ` +
40
+ `${format(x1 - handle)},${format(y1 - tangents[index + 1] * handle)} ${format(x1)},${format(y1)}`;
41
+ }
42
+ return path;
43
+ }
44
+
45
+ export { chartPoints, shareOfFinal, smoothChartPath };
@@ -0,0 +1 @@
1
+ .dui_Button-module__root__CbGH4{align-items:center;border:1px solid transparent;border-radius:var(--dui-radius-md);cursor:pointer;display:inline-flex;font:600 16px/1 var(--dui-font-family-body),sans-serif;gap:10px;justify-content:center;min-height:var(--dui-control-size-lg);padding:0 34px;transition:background-color var(--dui-duration-normal),box-shadow var(--dui-duration-normal),color var(--dui-duration-normal),border-color var(--dui-duration-normal);user-select:none}.dui_Button-module__root__CbGH4:active:not(:disabled){transform:translateY(1px)}.dui_Button-module__root__CbGH4:focus-visible{outline:2px solid var(--dui-color-ring);outline-offset:3px}.dui_Button-module__root__CbGH4:disabled:not([aria-busy=true]){cursor:not-allowed;opacity:.5}.dui_Button-module__primary__CQ8bX{background-image:linear-gradient(110deg,var(--dui-color-brand-gradient-start),var(--dui-color-brand-gradient-end));border-color:var(--dui-color-brand-gradient-border);box-shadow:0 5px 30px #078cff12,inset 0 1px 0 #c3f6ff33;color:var(--dui-color-brand-foreground)}.dui_Button-module__primary__CQ8bX:hover:not(:disabled){background-image:linear-gradient(110deg,var(--dui-color-brand-gradient-hover-start),var(--dui-color-brand-gradient-hover-end));box-shadow:0 8px 30px #27b7ef30}.dui_Button-module__primary__CQ8bX:disabled:not([aria-busy=true]){background:var(--dui-color-muted);border-color:var(--dui-color-border);box-shadow:none;color:var(--dui-color-muted-foreground);opacity:1}.dui_Button-module__secondary__wviPm{background:var(--dui-color-secondary);border-color:var(--dui-color-secondary-border);color:var(--dui-color-secondary-foreground)}.dui_Button-module__secondary__wviPm:hover:not(:disabled){background:var(--dui-color-secondary-hover);border-color:var(--dui-color-primary)}.dui_Button-module__ghost__2oIHL{background:transparent;color:var(--dui-color-muted-foreground)}.dui_Button-module__ghost__2oIHL:hover:not(:disabled){background:var(--dui-color-accent);color:var(--dui-color-foreground)}.dui_Button-module__destructive__DHvi7{background:color-mix(in srgb,var(--dui-color-destructive) 10%,transparent);border-color:color-mix(in srgb,var(--dui-color-destructive) 40%,transparent);color:var(--dui-color-destructive)}.dui_Button-module__destructive__DHvi7:hover:not(:disabled){background:color-mix(in srgb,var(--dui-color-destructive) 20%,transparent)}.dui_Button-module__small__5NNzM{font-size:15px;min-height:var(--dui-control-size-touch);padding-inline:24px}.dui_Button-module__medium__a-asN{min-height:var(--dui-control-size-lg)}.dui_Button-module__large__h29o-{min-height:var(--dui-control-size-xl);padding-inline:var(--dui-space-xl)}@media (prefers-reduced-motion:reduce){.dui_Button-module__root__CbGH4{transition:none}}.dui_Card-module__root__iRlmZ{background:var(--dui-color-card);border:1px solid var(--dui-color-border);border-radius:var(--dui-radius-xl);color:var(--dui-color-card-foreground);padding:var(--dui-space-xl)}.dui_ShareBar-module__track__sqVsW{background:var(--dui-color-muted);border-radius:var(--dui-radius-pill);height:8px;overflow:visible;position:relative}.dui_ShareBar-module__fill__klcFo{background:var(--dui-color-warning);border-radius:inherit;height:100%}.dui_ShareBar-module__covered__T8yfR{background:var(--dui-color-success)}.dui_ShareBar-module__tick__eVgaz{background:var(--dui-color-foreground);border-radius:1px;height:16px;position:absolute;top:-4px;transform:translateX(-50%);width:2px}.dui_Catalog-module__stack__rChQJ{display:grid;gap:var(--dui-space-lg)}.dui_Catalog-module__row__xLx-P{align-items:center;display:flex;flex-wrap:wrap;gap:var(--dui-space-md)}.dui_Catalog-module__grid__2rCan{display:grid;gap:var(--dui-space-lg);grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.dui_Catalog-module__label__V1yxt{color:var(--dui-color-foreground);display:grid;font-size:13px;font-weight:500;gap:var(--dui-space-sm)}.dui_Catalog-module__hint__mppWN{color:var(--dui-color-muted-foreground);font-size:12px;line-height:1.5}.dui_Catalog-module__field__vL57B{background:var(--dui-color-card);border:1px solid var(--dui-color-input);border-radius:var(--dui-radius-md);box-sizing:border-box;color:var(--dui-color-foreground);font:inherit;min-height:var(--dui-control-size-touch);padding:0 var(--dui-space-md);width:100%}.dui_Catalog-module__field__vL57B::placeholder{color:var(--dui-color-muted-foreground)}.dui_Catalog-module__check__8wWll:focus-visible,.dui_Catalog-module__field__vL57B:focus-visible,.dui_Catalog-module__iconButton__c612U:focus-visible,.dui_Catalog-module__radio__oE5-J:focus-visible,.dui_Catalog-module__select__mPh7s:focus-visible,.dui_Catalog-module__switch__-ZBy3:focus-visible,.dui_Catalog-module__tab__vDTnc:focus-visible{outline:2px solid var(--dui-color-ring);outline-offset:2px}.dui_Catalog-module__field__vL57B:disabled,.dui_Catalog-module__select__mPh7s:disabled{cursor:not-allowed;opacity:.5}.dui_Catalog-module__field__vL57B[aria-invalid=true],.dui_Catalog-module__invalid__5gd31,.dui_Catalog-module__select__mPh7s[aria-invalid=true]{border-color:var(--dui-color-destructive)}.dui_Catalog-module__error__msJNX{color:var(--dui-color-destructive);font-size:12px}.dui_Catalog-module__select__mPh7s{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--dui-color-muted-foreground) 50%),linear-gradient(135deg,var(--dui-color-muted-foreground) 50%,transparent 50%);background-position:calc(100% - 18px) 19px,calc(100% - 13px) 19px;background-repeat:no-repeat;background-size:5px 5px;padding-right:36px}.dui_Catalog-module__choice__uMRGN{align-items:center;color:var(--dui-color-foreground);cursor:pointer;display:inline-flex;gap:var(--dui-space-sm);min-height:var(--dui-control-size-touch)}.dui_Catalog-module__choice__uMRGN:has(:disabled){cursor:not-allowed;opacity:.5}.dui_Catalog-module__check__8wWll,.dui_Catalog-module__radio__oE5-J{appearance:none;background:var(--dui-color-card);border:2px solid var(--dui-color-input);cursor:pointer;flex:none;height:22px;margin:0;width:22px}.dui_Catalog-module__check__8wWll{border-radius:6px}.dui_Catalog-module__check__8wWll:checked{background:var(--dui-color-primary);border-color:var(--dui-color-primary)}.dui_Catalog-module__check__8wWll:checked:after{border:solid var(--dui-color-primary-foreground);border-width:0 2px 2px 0;content:"";display:block;height:11px;transform:translate(6px,2px) rotate(45deg);width:6px}.dui_Catalog-module__radio__oE5-J{border-radius:50%}.dui_Catalog-module__radio__oE5-J:checked{border:6px solid var(--dui-color-primary)}.dui_Catalog-module__switch__-ZBy3{appearance:none;background:var(--dui-color-muted);border:1px solid var(--dui-color-input);border-radius:999px;cursor:pointer;flex:none;height:26px;margin:0;position:relative;transition:background var(--dui-duration-fast);width:44px}.dui_Catalog-module__switch__-ZBy3:before{background:var(--dui-color-card);border-radius:50%;box-shadow:0 1px 3px var(--dui-color-overlay);content:"";height:20px;left:2px;position:absolute;top:2px;transition:transform var(--dui-duration-fast);width:20px}.dui_Catalog-module__switch__-ZBy3:checked{background:linear-gradient(110deg,var(--dui-color-brand-gradient-start),var(--dui-color-brand-gradient-end));border-color:var(--dui-color-brand-gradient-border)}.dui_Catalog-module__switch__-ZBy3:checked:before{transform:translateX(18px)}.dui_Catalog-module__check__8wWll:disabled,.dui_Catalog-module__radio__oE5-J:disabled,.dui_Catalog-module__switch__-ZBy3:disabled{cursor:not-allowed;opacity:.5}.dui_Catalog-module__tabs__2BA7V{align-items:stretch;border-bottom:1px solid var(--dui-color-border);display:flex;flex-wrap:wrap;gap:var(--dui-space-lg)}.dui_Catalog-module__tab__vDTnc{background:transparent;border:0;color:var(--dui-color-muted-foreground);cursor:pointer;font:inherit;min-height:var(--dui-control-size-touch);padding:0 var(--dui-space-xs);position:relative}.dui_Catalog-module__tab__vDTnc:hover{color:var(--dui-color-foreground)}.dui_Catalog-module__tabActive__fPMBa{color:var(--dui-color-primary)}.dui_Catalog-module__tabActive__fPMBa:after{background:var(--dui-color-primary);border-radius:999px;bottom:-1px;box-shadow:0 0 10px var(--dui-color-primary);content:"";height:2px;left:0;position:absolute;width:34px}.dui_Catalog-module__tabPill__RUW1u{border-radius:var(--dui-radius-lg);color:var(--dui-color-primary);outline:1px solid var(--dui-color-primary);outline-offset:-1px}.dui_Catalog-module__iconButton__c612U{background:var(--dui-color-card);border:1px solid var(--dui-color-border);border-radius:var(--dui-radius-lg);color:var(--dui-color-foreground);cursor:pointer;display:inline-grid;height:var(--dui-control-size-touch);padding:0;place-items:center;width:var(--dui-control-size-touch)}.dui_Catalog-module__iconButton__c612U:hover{border-color:var(--dui-color-primary);color:var(--dui-color-primary)}.dui_Catalog-module__iconButton__c612U:disabled{cursor:not-allowed;opacity:.5}.dui_Catalog-module__icon__AJg25{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;height:20px;width:20px}.dui_Catalog-module__avatar__seEYl{background:var(--dui-color-warning);border:2px solid var(--dui-color-primary);border-radius:50%;color:var(--dui-color-background);display:inline-grid;font-size:12px;font-weight:600;height:34px;place-items:center;width:34px}.dui_Catalog-module__badge__KJep6{align-items:center;background:var(--dui-color-accent);border-radius:999px;color:var(--dui-color-accent-foreground);display:inline-flex;font-size:12px;font-weight:600;min-height:22px;padding:0 8px}.dui_Catalog-module__badgeSuccess__F60aF{background:var(--dui-color-success);color:var(--dui-color-primary-foreground)}.dui_Catalog-module__badgeWarning__bjkmd{background:var(--dui-color-warning);color:var(--dui-color-background)}.dui_Catalog-module__metricLabel__aVoG5{color:var(--dui-color-muted-foreground);font:11px/1.5 var(--dui-font-family-mono),monospace;letter-spacing:.14em;text-transform:uppercase}.dui_Catalog-module__metricValue__EFR2u{color:var(--dui-color-success);font:500 clamp(24px,2.4vw,40px)/1.15 var(--dui-font-family-mono),monospace;font-variant-numeric:tabular-nums;letter-spacing:-.055em;margin:4px 0;white-space:nowrap}.dui_Catalog-module__summaryCard__O44Sm .dui_Catalog-module__metricValue__EFR2u{font-size:clamp(30px,4vw,48px)}.dui_Catalog-module__metricNote__5Xq3Z{color:var(--dui-color-muted-foreground);font-size:12px}.dui_Catalog-module__summaryCard__O44Sm{background:var(--dui-color-card);border:1px solid var(--dui-color-border);border-radius:var(--dui-radius-xl);color:var(--dui-color-card-foreground);padding:var(--dui-space-2xl)}.dui_Catalog-module__summaryMain__CGt3k{display:grid;gap:var(--dui-space-3xl);grid-template-columns:minmax(0,2fr) minmax(0,3fr)}.dui_Catalog-module__summaryColumn__xT-8Q{min-width:0}.dui_Catalog-module__summaryTitle__1KAfg{color:var(--dui-color-muted-foreground);font:11px/1.5 var(--dui-font-family-mono),monospace;letter-spacing:.15em;margin:0 0 var(--dui-space-xl);text-transform:uppercase}.dui_Catalog-module__summarySpent__KupfN{border-left:2px dashed var(--dui-color-chart-other);margin:var(--dui-space-lg) 0;padding-left:var(--dui-space-md)}.dui_Catalog-module__summarySpentValue__cYCxD{font:500 clamp(22px,2.8vw,30px)/1.2 var(--dui-font-family-mono),monospace;font-variant-numeric:tabular-nums;margin:2px 0 0}.dui_Catalog-module__summaryFooter__uXYlh{border-top:1px solid var(--dui-color-border);margin-top:var(--dui-space-2xl);padding-top:var(--dui-space-xl)}.dui_Catalog-module__summaryTopline__guFnA{display:flex;flex-wrap:wrap;font-size:13px;gap:var(--dui-space-md);justify-content:space-between;margin-bottom:var(--dui-space-sm)}.dui_Catalog-module__summaryChartHeading__51mke{align-items:flex-start;display:flex;gap:var(--dui-space-md);justify-content:space-between;min-height:64px}.dui_Catalog-module__pageHeading__f79eD{align-items:flex-end;display:flex;flex-wrap:wrap;gap:var(--dui-space-lg);justify-content:space-between;margin:var(--dui-space-3xl) 0 var(--dui-space-2xl)}.dui_Catalog-module__pageTitle__IGwN-{font-size:clamp(24px,3vw,30px);font-weight:600;letter-spacing:-.035em;line-height:1.2;margin:6px 0 2px}.dui_Catalog-module__callout__BPScX strong,.dui_Catalog-module__chartCard__Gxo6d strong,.dui_Catalog-module__summaryFooter__uXYlh strong{font-weight:600}.dui_Catalog-module__cifraNav__E09ha{align-items:center;display:flex;gap:24px;justify-content:space-between}.dui_Catalog-module__cifraNavTabs__jrF9l{border-bottom:0;flex:1;flex-wrap:nowrap;min-width:0;overflow-x:auto;scrollbar-width:none}.dui_Catalog-module__cifraNavTabs__jrF9l::-webkit-scrollbar{display:none}.dui_Catalog-module__cifraNavTabs__jrF9l .dui_Catalog-module__tab__vDTnc{flex:none}.dui_Catalog-module__eyebrow__XEzqz{color:var(--dui-color-primary);font:10px/1.4 var(--dui-font-family-mono),monospace;letter-spacing:.2em;text-transform:uppercase}.dui_Catalog-module__callout__BPScX{background:color-mix(in srgb,var(--dui-color-warning) 12%,var(--dui-color-card));border:1px solid var(--dui-color-warning);border-radius:var(--dui-radius-lg);color:var(--dui-color-foreground);line-height:1.5;padding:var(--dui-space-lg)}.dui_Catalog-module__calloutSuccess__5t0FQ{background:color-mix(in srgb,var(--dui-color-success) 12%,var(--dui-color-card));border-color:var(--dui-color-success)}.dui_Catalog-module__tableWrap__RI-0b{background:var(--dui-color-card);border:1px solid var(--dui-color-border);border-radius:var(--dui-radius-lg);overflow-x:auto;width:100%}.dui_Catalog-module__table__0iTne{border-collapse:collapse;color:var(--dui-color-foreground);font-size:14px;width:100%}.dui_Catalog-module__table__0iTne td,.dui_Catalog-module__table__0iTne th{border-bottom:1px solid var(--dui-color-border);padding:14px 16px;text-align:left;white-space:nowrap}.dui_Catalog-module__table__0iTne th{color:var(--dui-color-muted-foreground);font:500 11px/1.4 var(--dui-font-family-mono),monospace;letter-spacing:.14em;text-transform:uppercase}.dui_Catalog-module__table__0iTne tr:last-child td{border-bottom:0}.dui_Catalog-module__table__0iTne tbody tr:hover{background:var(--dui-color-accent)}.dui_Catalog-module__numeric__KjeSJ{font-family:var(--dui-font-family-mono),monospace;font-variant-numeric:tabular-nums;text-align:right!important}.dui_Catalog-module__status__6zORi{align-items:center;display:inline-flex;gap:6px}.dui_Catalog-module__status__6zORi:before{background:var(--dui-color-success);border-radius:50%;content:"";height:7px;width:7px}.dui_Catalog-module__statusPending__76Tkt:before{background:var(--dui-color-warning)}.dui_Catalog-module__spinner__2PSZp{animation:dui_Catalog-module__dui-spin__KdEdK .7s linear infinite;border:3px solid var(--dui-color-muted);border-radius:50%;border-top-color:var(--dui-color-primary);box-sizing:border-box;height:24px;width:24px}.dui_Catalog-module__skeleton__T9pSY{animation:dui_Catalog-module__dui-shimmer__yBnX- 1.4s ease-in-out infinite;background:linear-gradient(90deg,var(--dui-color-muted),var(--dui-color-accent),var(--dui-color-muted));background-size:200% 100%;border-radius:var(--dui-radius-sm);height:16px}.dui_Catalog-module__dialogBackdrop__snQ8t{background:var(--dui-color-overlay);display:grid;inset:0;padding:16px;place-items:center;position:fixed;z-index:100}.dui_Catalog-module__dialog__h5uNq{background:var(--dui-color-popover);border:1px solid var(--dui-color-border);border-radius:var(--dui-radius-2xl);box-shadow:0 18px 60px var(--dui-color-overlay);box-sizing:border-box;color:var(--dui-color-popover-foreground);padding:var(--dui-space-2xl);width:min(100%,420px)}.dui_Catalog-module__dialog__h5uNq::backdrop,.dui_Catalog-module__sheet__aht46::backdrop{background:var(--dui-color-overlay)}.dui_Catalog-module__dialogTitle__8QxO7{font-size:20px;line-height:1.3;margin:0 0 8px}.dui_Catalog-module__dialogActions__Sp14s{display:flex;flex-wrap:wrap;gap:var(--dui-space-sm);justify-content:flex-end;margin-top:var(--dui-space-2xl)}.dui_Catalog-module__sheet__aht46{background:var(--dui-color-popover);border:1px solid var(--dui-color-border);border-radius:var(--dui-radius-2xl) var(--dui-radius-2xl) 0 0;box-shadow:0 -12px 48px var(--dui-color-overlay);box-sizing:border-box;color:var(--dui-color-popover-foreground);padding:var(--dui-space-2xl);width:min(100%,420px)}.dui_Catalog-module__sheetHandle__gGGA3{background:var(--dui-color-input);border-radius:999px;height:4px;margin:-8px auto 20px;width:36px}.dui_Catalog-module__chartCard__Gxo6d{background:var(--dui-color-card);border:1px solid var(--dui-color-border);border-radius:var(--dui-radius-xl);color:var(--dui-color-card-foreground);padding:var(--dui-space-2xl)}.dui_Catalog-module__chartReading__gJu1J{align-items:flex-start;display:flex;gap:var(--dui-space-lg);justify-content:space-between;min-height:62px}.dui_Catalog-module__chartReadingValue__1IM0x{font:500 18px/1.25 var(--dui-font-family-mono),monospace;font-variant-numeric:tabular-nums;margin:4px 0 2px}.dui_Catalog-module__chartAxis__UW0Id{color:var(--dui-color-muted-foreground);display:flex;font:10px/1.4 var(--dui-font-family-mono),monospace;gap:var(--dui-space-sm);justify-content:space-between;margin-top:4px}.dui_Catalog-module__stackedBar__7At1p{background:var(--dui-color-muted);border-radius:999px;display:flex;gap:2px;height:10px;overflow:hidden;width:100%}.dui_Catalog-module__stackedSegment__FaQwj{border:0;cursor:pointer;height:100%;min-width:2px;opacity:.8;padding:0;transition:opacity var(--dui-duration-normal)}.dui_Catalog-module__stackedSegment__FaQwj:focus-visible,.dui_Catalog-module__stackedSegment__FaQwj:hover,.dui_Catalog-module__stackedSegment__FaQwj[aria-pressed=true]{opacity:1;outline:2px solid var(--dui-color-ring);outline-offset:-2px}.dui_Catalog-module__monthlyBars__uZngI{align-items:flex-end;display:flex;gap:4px;height:120px}.dui_Catalog-module__monthlyBar__ISmMb{align-items:flex-end;align-self:stretch;background:transparent;border:0;border-radius:3px;cursor:pointer;display:flex;flex:1;justify-content:center;min-width:0;padding:0;position:relative}.dui_Catalog-module__monthlyBarFill__5hYQ5{background:var(--dui-color-success);border-radius:3px 3px 0 0;display:block;min-height:2px;opacity:.45;width:100%}.dui_Catalog-module__monthlyBar__ISmMb:hover .dui_Catalog-module__monthlyBarFill__5hYQ5,.dui_Catalog-module__monthlyBar__ISmMb[aria-pressed=true] .dui_Catalog-module__monthlyBarFill__5hYQ5{opacity:1}.dui_Catalog-module__monthlyBarTick__sHKNC{border-top:1.5px dashed var(--dui-color-chart-other);left:0;position:absolute;right:0}.dui_Catalog-module__monthlyBar__ISmMb:focus-visible{outline:2px solid var(--dui-color-ring);outline-offset:2px}.dui_Catalog-module__chartState__1OHWg{border:1px dashed var(--dui-color-border);border-radius:var(--dui-radius-md);color:var(--dui-color-muted-foreground);display:grid;min-height:144px;padding:var(--dui-space-lg);place-items:center;text-align:center}.dui_Catalog-module__chartInteractive__5IYhQ{border-bottom:1px solid var(--dui-color-border);border-radius:var(--dui-radius-sm);cursor:crosshair;height:144px;outline:none;position:relative;touch-action:pan-y;width:100%}.dui_Catalog-module__chartInteractive__5IYhQ:focus-visible{outline:2px solid var(--dui-color-ring);outline-offset:3px}.dui_Catalog-module__chartInteractive__5IYhQ svg{display:block;height:100%;overflow:visible;width:100%}.dui_Catalog-module__sparkDot__OtXXW{background:var(--dui-series-color);border:2px solid var(--dui-color-card);border-radius:50%;box-shadow:0 0 10px 3px var(--dui-series-color);height:9px;pointer-events:none;position:absolute;transform:translate(-50%,-50%);width:9px}.dui_Catalog-module__chartLegend__TUJRd{color:var(--dui-color-muted-foreground);display:flex;flex-wrap:wrap;font-size:12px;gap:var(--dui-space-lg);justify-content:flex-end;margin-top:var(--dui-space-sm)}.dui_Catalog-module__annualBar__zkTiD{padding:8px 0;position:relative}.dui_Catalog-module__annualBilledHit__vSmlF,.dui_Catalog-module__annualSpentHit__-iEtu{background:transparent;border:0;cursor:pointer;height:24px;padding:0;position:absolute;top:0}.dui_Catalog-module__annualBilledHit__vSmlF{left:0;min-width:24px}.dui_Catalog-module__annualSpentHit__-iEtu{transform:translateX(-50%);width:24px}.dui_Catalog-module__annualSpentHit__-iEtu:after{background:var(--dui-color-foreground);border-radius:2px;bottom:4px;content:"";left:11px;position:absolute;top:4px;width:2px}.dui_Catalog-module__annualBilledHit__vSmlF:focus-visible,.dui_Catalog-module__annualBilledHit__vSmlF:hover,.dui_Catalog-module__annualBilledHit__vSmlF[aria-pressed=true],.dui_Catalog-module__annualSpentHit__-iEtu:focus-visible,.dui_Catalog-module__annualSpentHit__-iEtu:hover,.dui_Catalog-module__annualSpentHit__-iEtu[aria-pressed=true]{border-radius:5px;outline:1px solid var(--dui-color-ring);outline-offset:2px}.dui_Catalog-module__annualBarDetail__53s7V{background:var(--dui-color-popover);border:1px solid var(--dui-color-border);border-radius:var(--dui-radius-sm);color:var(--dui-color-popover-foreground);font-size:12px;margin-top:5px;padding:5px 8px;width:fit-content}.dui_Catalog-module__chartKey__9vf8e{align-items:center;display:inline-flex;gap:6px}.dui_Catalog-module__chartKey__9vf8e:before{background:var(--dui-series-color);border-radius:50%;content:"";display:inline-block;height:8px;width:8px}.dui_Catalog-module__chartKeyDashed__b1-ps:before{background:none;border-radius:0;border-top:1.5px dashed var(--dui-series-color);height:0;width:14px}@keyframes dui_Catalog-module__dui-spin__KdEdK{to{transform:rotate(1turn)}}@keyframes dui_Catalog-module__dui-shimmer__yBnX-{to{background-position-x:-200%}}@media (prefers-reduced-motion:reduce){.dui_Catalog-module__skeleton__T9pSY,.dui_Catalog-module__spinner__2PSZp{animation:none}}@media (max-width:600px){.dui_Catalog-module__tabs__2BA7V{gap:var(--dui-space-md)}.dui_Catalog-module__table__0iTne td,.dui_Catalog-module__table__0iTne th{padding:12px}}@media (max-width:767px){.dui_Catalog-module__summaryMain__CGt3k{gap:var(--dui-space-2xl);grid-template-columns:1fr}.dui_Catalog-module__summaryCard__O44Sm{padding:var(--dui-space-lg)}.dui_Catalog-module__summaryTopline__guFnA{display:grid}.dui_Catalog-module__pageHeading__f79eD{align-items:flex-start;margin-top:var(--dui-space-2xl)}.dui_Catalog-module__cifraNav__E09ha{display:grid;gap:8px;grid-template-columns:1fr auto}.dui_Catalog-module__cifraNavTabs__jrF9l{grid-column:1/-1;grid-row:2;width:100%}.dui_Catalog-module__cifraNavTabs__jrF9l .dui_Catalog-module__tab__vDTnc{min-height:38px}}
@@ -0,0 +1,18 @@
1
+ /** 24 × 24 outline paths. Render with SVG in any web framework. */
2
+ export declare const iconPaths: {
3
+ readonly bell: "M18 8a6 6 0 0 0-12 0c0 7-3 7-3 9h18c0-2-3-2-3-9M10 21h4";
4
+ readonly sparkles: "m12 3 1.9 5.1L19 10l-5.1 1.9L12 17l-1.9-5.1L5 10l5.1-1.9L12 3Zm7 12 .8 2.2L22 18l-2.2.8L19 21l-.8-2.2L16 18l2.2-.8L19 15ZM4 2l.6 1.4L6 4l-1.4.6L4 6l-.6-1.4L2 4l1.4-.6L4 2Z";
5
+ readonly chevronDown: "m6 9 6 6 6-6";
6
+ readonly chevronLeft: "m15 18-6-6 6-6";
7
+ readonly chevronRight: "m9 18 6-6-6-6";
8
+ readonly check: "m5 12 4 4L19 6";
9
+ readonly close: "M18 6 6 18M6 6l12 12";
10
+ readonly search: "M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16Zm6-2 4 4";
11
+ readonly trendUp: "m3 17 6-6 4 4 8-8M15 7h6v6";
12
+ readonly trendDown: "m3 7 6 6 4-4 8 8M15 17h6v-6";
13
+ readonly wallet: "M3 7V5a2 2 0 0 1 2-2h14v4H5a2 2 0 0 0 0 4h16v12H5a2 2 0 0 1-2-2V7Zm13 6h5";
14
+ readonly calendar: "M4 5h16v16H4V5Zm4-2v4m8-4v4M4 10h16";
15
+ readonly menu: "M4 6h16M4 12h16M4 18h16";
16
+ readonly info: "M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20Zm0-11v6m0-10h.01";
17
+ };
18
+ export type IconName = keyof typeof iconPaths;
package/dist/icons.js ADDED
@@ -0,0 +1,19 @@
1
+ /** 24 × 24 outline paths. Render with SVG in any web framework. */
2
+ const iconPaths = {
3
+ bell: 'M18 8a6 6 0 0 0-12 0c0 7-3 7-3 9h18c0-2-3-2-3-9M10 21h4',
4
+ sparkles: 'm12 3 1.9 5.1L19 10l-5.1 1.9L12 17l-1.9-5.1L5 10l5.1-1.9L12 3Zm7 12 .8 2.2L22 18l-2.2.8L19 21l-.8-2.2L16 18l2.2-.8L19 15ZM4 2l.6 1.4L6 4l-1.4.6L4 6l-.6-1.4L2 4l1.4-.6L4 2Z',
5
+ chevronDown: 'm6 9 6 6 6-6',
6
+ chevronLeft: 'm15 18-6-6 6-6',
7
+ chevronRight: 'm9 18 6-6-6-6',
8
+ check: 'm5 12 4 4L19 6',
9
+ close: 'M18 6 6 18M6 6l12 12',
10
+ search: 'M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16Zm6-2 4 4',
11
+ trendUp: 'm3 17 6-6 4 4 8-8M15 7h6v6',
12
+ trendDown: 'm3 7 6 6 4-4 8 8M15 17h6v-6',
13
+ wallet: 'M3 7V5a2 2 0 0 1 2-2h14v4H5a2 2 0 0 0 0 4h16v12H5a2 2 0 0 1-2-2V7Zm13 6h5',
14
+ calendar: 'M4 5h16v16H4V5Zm4-2v4m8-4v4M4 10h16',
15
+ menu: 'M4 6h16M4 12h16M4 18h16',
16
+ info: 'M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20Zm0-11v6m0-10h.01'
17
+ };
18
+
19
+ export { iconPaths };
@@ -0,0 +1,22 @@
1
+ import './theme.css';
2
+ export type ButtonTone = 'primary' | 'secondary' | 'ghost' | 'destructive';
3
+ export type ButtonSize = 'small' | 'medium' | 'large';
4
+ /** Framework-neutral class contracts; consumers import the two CSS exports once. */
5
+ export declare function buttonClass(options?: {
6
+ tone?: ButtonTone;
7
+ size?: ButtonSize;
8
+ }): string;
9
+ export declare const cardClass: string | undefined;
10
+ export declare const shareBarClasses: {
11
+ readonly track: string | undefined;
12
+ readonly fill: string | undefined;
13
+ readonly covered: string | undefined;
14
+ readonly tick: string | undefined;
15
+ };
16
+ /** Framework-neutral styling for controls, navigation, data and feedback. */
17
+ export declare const catalogClasses: Record<string, string>;
18
+ export { iconPaths } from './icons.js';
19
+ export type { IconName } from './icons.js';
20
+ export { sharePercent } from '@decoda-ui/tokens';
21
+ export { chartPoints, shareOfFinal, smoothChartPath } from './chart.js';
22
+ export type { ChartPoint } from './chart.js';
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ import button from './Button.module.css.js';
2
+ import card from './Card.module.css.js';
3
+ import shareBar from './ShareBar.module.css.js';
4
+ import catalog from './Catalog.module.css.js';
5
+ export { iconPaths } from './icons.js';
6
+ export { sharePercent } from '@decoda-ui/tokens';
7
+ export { chartPoints, shareOfFinal, smoothChartPath } from './chart.js';
8
+
9
+ /** Framework-neutral class contracts; consumers import the two CSS exports once. */
10
+ function buttonClass(options = {}) {
11
+ return [button.root, button[options.tone ?? 'primary'], button[options.size ?? 'medium']].join(' ');
12
+ }
13
+ const cardClass = card.root;
14
+ const shareBarClasses = {
15
+ track: shareBar.track,
16
+ fill: shareBar.fill,
17
+ covered: shareBar.covered,
18
+ tick: shareBar.tick
19
+ };
20
+ /** Framework-neutral styling for controls, navigation, data and feedback. */
21
+ const catalogClasses = catalog;
22
+
23
+ export { buttonClass, cardClass, catalogClasses, shareBarClasses };
package/dist/theme.css ADDED
@@ -0,0 +1,228 @@
1
+ :root {
2
+ --dui-color-background: #f3f7fa;
3
+ --dui-color-foreground: #0a1820;
4
+ --dui-color-card: #ffffff;
5
+ --dui-color-card-foreground: #0a1820;
6
+ --dui-color-popover: #ffffff;
7
+ --dui-color-popover-foreground: #0a1820;
8
+ --dui-color-primary: #086f94;
9
+ --dui-color-primary-foreground: #ffffff;
10
+ --dui-color-brand-primary: #086f94;
11
+ --dui-color-brand-gradient-start: #55d8ee;
12
+ --dui-color-brand-gradient-end: #2794ff;
13
+ --dui-color-brand-gradient-hover-start: #88e7f6;
14
+ --dui-color-brand-gradient-hover-end: #50aeff;
15
+ --dui-color-brand-gradient-border: #2f9fdc;
16
+ --dui-color-brand-foreground: #061721;
17
+ --dui-color-secondary: #ffffff;
18
+ --dui-color-secondary-foreground: #0a1820;
19
+ --dui-color-secondary-border: #7a95a3;
20
+ --dui-color-secondary-hover: #e9f1f6;
21
+ --dui-color-muted: #e6eef3;
22
+ --dui-color-muted-foreground: #4f6a79;
23
+ --dui-color-accent: #e2edf3;
24
+ --dui-color-accent-foreground: #0a1820;
25
+ --dui-color-destructive: #b91c1c;
26
+ --dui-color-destructive-surface: #fbeeee;
27
+ --dui-color-destructive-border: #e9a7a7;
28
+ --dui-color-success: #15803d;
29
+ --dui-color-warning: #8a5a05;
30
+ --dui-color-caution: #b45309;
31
+ --dui-color-caution-foreground: #ffffff;
32
+ --dui-color-border: rgb(23 84 110 / 0.2);
33
+ --dui-color-input: rgb(23 84 110 / 0.62);
34
+ --dui-color-ring: #086f94;
35
+ --dui-color-chart1: #1f7fb8;
36
+ --dui-color-chart2: #e0602c;
37
+ --dui-color-chart3: #4a3aa7;
38
+ --dui-color-chart4: #138a60;
39
+ --dui-color-chart5: #a87400;
40
+ --dui-color-chart6: #c9457d;
41
+ --dui-color-chart7: #b463f6;
42
+ --dui-color-chart-other: #7d8f9b;
43
+ --dui-color-line-soft: #d5e2ea;
44
+ --dui-color-overlay: rgb(10 24 32 / 0.4);
45
+ --dui-space-none: 0px;
46
+ --dui-space-xxs: 2px;
47
+ --dui-space-xs: 4px;
48
+ --dui-space-sm: 8px;
49
+ --dui-space-md: 12px;
50
+ --dui-space-lg: 16px;
51
+ --dui-space-xl: 20px;
52
+ --dui-space-2xl: 24px;
53
+ --dui-space-3xl: 32px;
54
+ --dui-space-4xl: 40px;
55
+ --dui-space-5xl: 48px;
56
+ --dui-space-6xl: 64px;
57
+ --dui-radius-none: 0px;
58
+ --dui-radius-xs: 4px;
59
+ --dui-radius-sm: 8px;
60
+ --dui-radius-md: 9px;
61
+ --dui-radius-lg: 12px;
62
+ --dui-radius-xl: 14px;
63
+ --dui-radius-2xl: 20px;
64
+ --dui-radius-pill: 999px;
65
+ --dui-control-size-sm: 32px;
66
+ --dui-control-size-md: 40px;
67
+ --dui-control-size-touch: 44px;
68
+ --dui-control-size-lg: 50px;
69
+ --dui-control-size-xl: 56px;
70
+ --dui-font-family-body: Manrope;
71
+ --dui-font-family-mono: IBM Plex Mono;
72
+ --dui-font-family-display: Biysk;
73
+ --dui-duration-fast: 120ms;
74
+ --dui-duration-normal: 200ms;
75
+ --dui-duration-slow: 300ms;
76
+ }
77
+ [data-dui-theme="light"] {
78
+ --dui-color-background: #f3f7fa;
79
+ --dui-color-foreground: #0a1820;
80
+ --dui-color-card: #ffffff;
81
+ --dui-color-card-foreground: #0a1820;
82
+ --dui-color-popover: #ffffff;
83
+ --dui-color-popover-foreground: #0a1820;
84
+ --dui-color-primary: #086f94;
85
+ --dui-color-primary-foreground: #ffffff;
86
+ --dui-color-brand-primary: #086f94;
87
+ --dui-color-brand-gradient-start: #55d8ee;
88
+ --dui-color-brand-gradient-end: #2794ff;
89
+ --dui-color-brand-gradient-hover-start: #88e7f6;
90
+ --dui-color-brand-gradient-hover-end: #50aeff;
91
+ --dui-color-brand-gradient-border: #2f9fdc;
92
+ --dui-color-brand-foreground: #061721;
93
+ --dui-color-secondary: #ffffff;
94
+ --dui-color-secondary-foreground: #0a1820;
95
+ --dui-color-secondary-border: #7a95a3;
96
+ --dui-color-secondary-hover: #e9f1f6;
97
+ --dui-color-muted: #e6eef3;
98
+ --dui-color-muted-foreground: #4f6a79;
99
+ --dui-color-accent: #e2edf3;
100
+ --dui-color-accent-foreground: #0a1820;
101
+ --dui-color-destructive: #b91c1c;
102
+ --dui-color-destructive-surface: #fbeeee;
103
+ --dui-color-destructive-border: #e9a7a7;
104
+ --dui-color-success: #15803d;
105
+ --dui-color-warning: #8a5a05;
106
+ --dui-color-caution: #b45309;
107
+ --dui-color-caution-foreground: #ffffff;
108
+ --dui-color-border: rgb(23 84 110 / 0.2);
109
+ --dui-color-input: rgb(23 84 110 / 0.62);
110
+ --dui-color-ring: #086f94;
111
+ --dui-color-chart1: #1f7fb8;
112
+ --dui-color-chart2: #e0602c;
113
+ --dui-color-chart3: #4a3aa7;
114
+ --dui-color-chart4: #138a60;
115
+ --dui-color-chart5: #a87400;
116
+ --dui-color-chart6: #c9457d;
117
+ --dui-color-chart7: #b463f6;
118
+ --dui-color-chart-other: #7d8f9b;
119
+ --dui-color-line-soft: #d5e2ea;
120
+ --dui-color-overlay: rgb(10 24 32 / 0.4);
121
+ --dui-space-none: 0px;
122
+ --dui-space-xxs: 2px;
123
+ --dui-space-xs: 4px;
124
+ --dui-space-sm: 8px;
125
+ --dui-space-md: 12px;
126
+ --dui-space-lg: 16px;
127
+ --dui-space-xl: 20px;
128
+ --dui-space-2xl: 24px;
129
+ --dui-space-3xl: 32px;
130
+ --dui-space-4xl: 40px;
131
+ --dui-space-5xl: 48px;
132
+ --dui-space-6xl: 64px;
133
+ --dui-radius-none: 0px;
134
+ --dui-radius-xs: 4px;
135
+ --dui-radius-sm: 8px;
136
+ --dui-radius-md: 9px;
137
+ --dui-radius-lg: 12px;
138
+ --dui-radius-xl: 14px;
139
+ --dui-radius-2xl: 20px;
140
+ --dui-radius-pill: 999px;
141
+ --dui-control-size-sm: 32px;
142
+ --dui-control-size-md: 40px;
143
+ --dui-control-size-touch: 44px;
144
+ --dui-control-size-lg: 50px;
145
+ --dui-control-size-xl: 56px;
146
+ --dui-font-family-body: Manrope;
147
+ --dui-font-family-mono: IBM Plex Mono;
148
+ --dui-font-family-display: Biysk;
149
+ --dui-duration-fast: 120ms;
150
+ --dui-duration-normal: 200ms;
151
+ --dui-duration-slow: 300ms;
152
+ }
153
+ [data-dui-theme="dark"] {
154
+ --dui-color-background: #060c10;
155
+ --dui-color-foreground: #f1f7fc;
156
+ --dui-color-card: #0b151c;
157
+ --dui-color-card-foreground: #f1f7fc;
158
+ --dui-color-popover: #0b151c;
159
+ --dui-color-popover-foreground: #f1f7fc;
160
+ --dui-color-primary: #60d9f5;
161
+ --dui-color-primary-foreground: #061721;
162
+ --dui-color-brand-primary: #60d9f5;
163
+ --dui-color-brand-gradient-start: #55d8ee;
164
+ --dui-color-brand-gradient-end: #2794ff;
165
+ --dui-color-brand-gradient-hover-start: #88e7f6;
166
+ --dui-color-brand-gradient-hover-end: #50aeff;
167
+ --dui-color-brand-gradient-border: #4dbdf9;
168
+ --dui-color-brand-foreground: #061721;
169
+ --dui-color-secondary: #0b141a;
170
+ --dui-color-secondary-foreground: #f1f7fc;
171
+ --dui-color-secondary-border: #2b3a45;
172
+ --dui-color-secondary-hover: #14232b;
173
+ --dui-color-muted: #0f1b22;
174
+ --dui-color-muted-foreground: #94aaba;
175
+ --dui-color-accent: #14232b;
176
+ --dui-color-accent-foreground: #f1f7fc;
177
+ --dui-color-destructive: #f87171;
178
+ --dui-color-destructive-surface: #2b171a;
179
+ --dui-color-destructive-border: #88424a;
180
+ --dui-color-success: #4ade80;
181
+ --dui-color-warning: #f2b23a;
182
+ --dui-color-caution: #fbbf24;
183
+ --dui-color-caution-foreground: #1a1204;
184
+ --dui-color-border: rgb(113 186 214 / 0.18);
185
+ --dui-color-input: rgb(113 186 214 / 0.55);
186
+ --dui-color-ring: #60d9f5;
187
+ --dui-color-chart1: #2f9fd6;
188
+ --dui-color-chart2: #d95926;
189
+ --dui-color-chart3: #9085e9;
190
+ --dui-color-chart4: #199e70;
191
+ --dui-color-chart5: #c98500;
192
+ --dui-color-chart6: #d55181;
193
+ --dui-color-chart7: #993ccf;
194
+ --dui-color-chart-other: #5f7684;
195
+ --dui-color-line-soft: #1c303b;
196
+ --dui-color-overlay: rgb(6 12 16 / 0.7);
197
+ --dui-space-none: 0px;
198
+ --dui-space-xxs: 2px;
199
+ --dui-space-xs: 4px;
200
+ --dui-space-sm: 8px;
201
+ --dui-space-md: 12px;
202
+ --dui-space-lg: 16px;
203
+ --dui-space-xl: 20px;
204
+ --dui-space-2xl: 24px;
205
+ --dui-space-3xl: 32px;
206
+ --dui-space-4xl: 40px;
207
+ --dui-space-5xl: 48px;
208
+ --dui-space-6xl: 64px;
209
+ --dui-radius-none: 0px;
210
+ --dui-radius-xs: 4px;
211
+ --dui-radius-sm: 8px;
212
+ --dui-radius-md: 9px;
213
+ --dui-radius-lg: 12px;
214
+ --dui-radius-xl: 14px;
215
+ --dui-radius-2xl: 20px;
216
+ --dui-radius-pill: 999px;
217
+ --dui-control-size-sm: 32px;
218
+ --dui-control-size-md: 40px;
219
+ --dui-control-size-touch: 44px;
220
+ --dui-control-size-lg: 50px;
221
+ --dui-control-size-xl: 56px;
222
+ --dui-font-family-body: Manrope;
223
+ --dui-font-family-mono: IBM Plex Mono;
224
+ --dui-font-family-display: Biysk;
225
+ --dui-duration-fast: 120ms;
226
+ --dui-duration-normal: 200ms;
227
+ --dui-duration-slow: 300ms;
228
+ }
@@ -0,0 +1,89 @@
1
+ /** Public variable names let Angular, Svelte and plain CSS use the same theme. */
2
+ export declare const vars: {
3
+ color: {
4
+ background: `var(--${string})`;
5
+ foreground: `var(--${string})`;
6
+ card: `var(--${string})`;
7
+ cardForeground: `var(--${string})`;
8
+ popover: `var(--${string})`;
9
+ popoverForeground: `var(--${string})`;
10
+ primary: `var(--${string})`;
11
+ primaryForeground: `var(--${string})`;
12
+ brandPrimary: `var(--${string})`;
13
+ brandGradientStart: `var(--${string})`;
14
+ brandGradientEnd: `var(--${string})`;
15
+ brandGradientHoverStart: `var(--${string})`;
16
+ brandGradientHoverEnd: `var(--${string})`;
17
+ brandGradientBorder: `var(--${string})`;
18
+ brandForeground: `var(--${string})`;
19
+ secondary: `var(--${string})`;
20
+ secondaryForeground: `var(--${string})`;
21
+ secondaryBorder: `var(--${string})`;
22
+ secondaryHover: `var(--${string})`;
23
+ muted: `var(--${string})`;
24
+ mutedForeground: `var(--${string})`;
25
+ accent: `var(--${string})`;
26
+ accentForeground: `var(--${string})`;
27
+ destructive: `var(--${string})`;
28
+ destructiveSurface: `var(--${string})`;
29
+ destructiveBorder: `var(--${string})`;
30
+ success: `var(--${string})`;
31
+ warning: `var(--${string})`;
32
+ caution: `var(--${string})`;
33
+ cautionForeground: `var(--${string})`;
34
+ border: `var(--${string})`;
35
+ input: `var(--${string})`;
36
+ ring: `var(--${string})`;
37
+ chart1: `var(--${string})`;
38
+ chart2: `var(--${string})`;
39
+ chart3: `var(--${string})`;
40
+ chart4: `var(--${string})`;
41
+ chart5: `var(--${string})`;
42
+ chart6: `var(--${string})`;
43
+ chart7: `var(--${string})`;
44
+ chartOther: `var(--${string})`;
45
+ lineSoft: `var(--${string})`;
46
+ overlay: `var(--${string})`;
47
+ };
48
+ space: {
49
+ readonly none: `var(--${string})`;
50
+ readonly xxs: `var(--${string})`;
51
+ readonly xs: `var(--${string})`;
52
+ readonly sm: `var(--${string})`;
53
+ readonly md: `var(--${string})`;
54
+ readonly lg: `var(--${string})`;
55
+ readonly xl: `var(--${string})`;
56
+ readonly '2xl': `var(--${string})`;
57
+ readonly '3xl': `var(--${string})`;
58
+ readonly '4xl': `var(--${string})`;
59
+ readonly '5xl': `var(--${string})`;
60
+ readonly '6xl': `var(--${string})`;
61
+ };
62
+ radius: {
63
+ readonly none: `var(--${string})`;
64
+ readonly xs: `var(--${string})`;
65
+ readonly sm: `var(--${string})`;
66
+ readonly md: `var(--${string})`;
67
+ readonly lg: `var(--${string})`;
68
+ readonly xl: `var(--${string})`;
69
+ readonly '2xl': `var(--${string})`;
70
+ readonly pill: `var(--${string})`;
71
+ };
72
+ controlSize: {
73
+ readonly sm: `var(--${string})`;
74
+ readonly md: `var(--${string})`;
75
+ readonly touch: `var(--${string})`;
76
+ readonly lg: `var(--${string})`;
77
+ readonly xl: `var(--${string})`;
78
+ };
79
+ fontFamily: {
80
+ readonly body: `var(--${string})`;
81
+ readonly mono: `var(--${string})`;
82
+ readonly display: `var(--${string})`;
83
+ };
84
+ duration: {
85
+ readonly fast: `var(--${string})`;
86
+ readonly normal: `var(--${string})`;
87
+ readonly slow: `var(--${string})`;
88
+ };
89
+ };
package/package.json CHANGED
@@ -1,6 +1,38 @@
1
1
  {
2
2
  "name": "@decoda-ui/web",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.1.1",
4
+ "type": "module",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "sideEffects": [
9
+ "**/*.css"
10
+ ],
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js"
15
+ },
16
+ "./theme.css": "./dist/theme.css",
17
+ "./components.css": "./dist/components.css"
18
+ },
19
+ "files": [
20
+ "dist"
21
+ ],
22
+ "dependencies": {
23
+ "@decoda-ui/tokens": "0.1.0"
24
+ },
25
+ "devDependencies": {
26
+ "@rollup/plugin-node-resolve": "latest",
27
+ "@rollup/plugin-typescript": "latest",
28
+ "@vanilla-extract/css": "latest",
29
+ "@vanilla-extract/rollup-plugin": "latest",
30
+ "rollup": "latest",
31
+ "rollup-plugin-postcss": "latest",
32
+ "tslib": "latest"
33
+ },
34
+ "scripts": {
35
+ "build": "rollup -c && tsc -p tsconfig.build.json --emitDeclarationOnly",
36
+ "typecheck": "tsc -p tsconfig.json --noEmit"
37
+ }
6
38
  }
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.