@steez-ui/ui 0.1.3 → 0.1.5

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 (61) hide show
  1. package/README.md +8 -5
  2. package/dist/components/AvatarStage.d.ts +10 -0
  3. package/dist/components/AvatarStage.d.ts.map +1 -0
  4. package/dist/components/AvatarStage.js +11 -0
  5. package/dist/components/AvatarStage.js.map +1 -0
  6. package/dist/components/AvatarStage.module.css +34 -0
  7. package/dist/components/BlinkText.d.ts +13 -0
  8. package/dist/components/BlinkText.d.ts.map +1 -0
  9. package/dist/components/BlinkText.js +13 -0
  10. package/dist/components/BlinkText.js.map +1 -0
  11. package/dist/components/BlinkText.module.css +40 -0
  12. package/dist/components/Button.js.map +1 -1
  13. package/dist/components/CopyButton.js.map +1 -1
  14. package/dist/components/CornerBracketCard.js.map +1 -1
  15. package/dist/components/CyberpunkCheckbox.js.map +1 -1
  16. package/dist/components/CyberpunkInput.js.map +1 -1
  17. package/dist/components/CyberpunkRadio.js.map +1 -1
  18. package/dist/components/CyberpunkSelect.js.map +1 -1
  19. package/dist/components/CyberpunkSlider.js.map +1 -1
  20. package/dist/components/CyberpunkTextarea.js.map +1 -1
  21. package/dist/components/CyberpunkTile.js.map +1 -1
  22. package/dist/components/ErrorMessage.js.map +1 -1
  23. package/dist/components/HeartbeatPulse.d.ts +19 -0
  24. package/dist/components/HeartbeatPulse.d.ts.map +1 -0
  25. package/dist/components/HeartbeatPulse.js +33 -0
  26. package/dist/components/HeartbeatPulse.js.map +1 -0
  27. package/dist/components/HeartbeatPulse.module.css +34 -0
  28. package/dist/components/HexagonGrid.d.ts +12 -0
  29. package/dist/components/HexagonGrid.d.ts.map +1 -0
  30. package/dist/components/HexagonGrid.js +284 -0
  31. package/dist/components/HexagonGrid.js.map +1 -0
  32. package/dist/components/HexagonGrid.module.css +14 -0
  33. package/dist/components/LoadingProgressBar.js.map +1 -1
  34. package/dist/components/MarqueeStrip.d.ts +13 -0
  35. package/dist/components/MarqueeStrip.d.ts.map +1 -0
  36. package/dist/components/MarqueeStrip.js +12 -0
  37. package/dist/components/MarqueeStrip.js.map +1 -0
  38. package/dist/components/MarqueeStrip.module.css +36 -0
  39. package/dist/components/PageHeader.js.map +1 -1
  40. package/dist/components/PageTemplate.js.map +1 -1
  41. package/dist/components/RuntimeOrbitDiagram.d.ts +19 -0
  42. package/dist/components/RuntimeOrbitDiagram.d.ts.map +1 -0
  43. package/dist/components/RuntimeOrbitDiagram.js +39 -0
  44. package/dist/components/RuntimeOrbitDiagram.js.map +1 -0
  45. package/dist/components/RuntimeOrbitDiagram.module.css +160 -0
  46. package/dist/components/SegmentedControl.js.map +1 -1
  47. package/dist/components/StatusMessage.js.map +1 -1
  48. package/dist/components/StrokedText.d.ts +10 -0
  49. package/dist/components/StrokedText.d.ts.map +1 -0
  50. package/dist/components/StrokedText.js +12 -0
  51. package/dist/components/StrokedText.js.map +1 -0
  52. package/dist/components/StrokedText.module.css +63 -0
  53. package/dist/components/TabbedPanel.js.map +1 -1
  54. package/dist/components/ThemeToggle.js.map +1 -1
  55. package/dist/components/ThemedCard.js.map +1 -1
  56. package/dist/hooks/useStableId.js.map +1 -1
  57. package/dist/index.d.ts +7 -0
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +7 -0
  60. package/dist/index.js.map +1 -1
  61. package/package.json +3 -3
@@ -0,0 +1,160 @@
1
+ .root {
2
+ --orbit-duration: 5.4s;
3
+
4
+ position: relative;
5
+ width: min(100%, 38rem);
6
+ aspect-ratio: 1;
7
+ min-height: 22rem;
8
+ isolation: isolate;
9
+ }
10
+
11
+ .svg {
12
+ width: 100%;
13
+ height: 100%;
14
+ display: block;
15
+ overflow: visible;
16
+ }
17
+
18
+ .track {
19
+ fill: none;
20
+ stroke: color-mix(in srgb, var(--text-primary) 14%, transparent);
21
+ stroke-width: 0.8;
22
+ stroke-linecap: round;
23
+ stroke-linejoin: round;
24
+ }
25
+
26
+ .pathLine {
27
+ fill: none;
28
+ stroke: color-mix(in srgb, var(--accent-primary) 88%, transparent);
29
+ stroke-width: 1.35;
30
+ stroke-linecap: round;
31
+ stroke-linejoin: round;
32
+ stroke-dasharray: 14 86;
33
+ animation: orbitPath var(--orbit-duration) linear infinite;
34
+ }
35
+
36
+ .node {
37
+ position: absolute;
38
+ top: var(--node-y);
39
+ left: var(--node-x);
40
+ width: clamp(4.15rem, 8vw, 4.95rem);
41
+ aspect-ratio: 1;
42
+ translate: -50% -50%;
43
+ display: grid;
44
+ place-items: center;
45
+ border-radius: 999px;
46
+ color: color-mix(in srgb, var(--text-secondary) 92%, transparent);
47
+ border: 1px solid color-mix(in srgb, var(--border-color) 78%, transparent);
48
+ background: color-mix(in srgb, var(--bg-secondary) 94%, transparent);
49
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--bg-primary) 28%, transparent);
50
+ animation: orbitPulse var(--orbit-duration) linear infinite;
51
+ animation-delay: var(--node-delay);
52
+ transition:
53
+ border-color var(--tile-hover-duration, 220ms) ease,
54
+ transform var(--tile-hover-duration, 220ms) ease,
55
+ background-color var(--tile-hover-duration, 220ms) ease;
56
+ }
57
+
58
+ .node:hover {
59
+ color: var(--text-primary);
60
+ border-color: color-mix(in srgb, var(--accent-primary) 46%, var(--border-color));
61
+ transform: translateY(-1px);
62
+ }
63
+
64
+ .nodeInner {
65
+ width: calc(100% - 10px);
66
+ height: calc(100% - 10px);
67
+ display: grid;
68
+ place-items: center;
69
+ border-radius: inherit;
70
+ background: color-mix(in srgb, var(--bg-primary) 96%, transparent);
71
+ }
72
+
73
+ .nodeInner svg {
74
+ width: 48%;
75
+ height: 48%;
76
+ color: currentColor;
77
+ opacity: 0.88;
78
+ transform: scale(0.86);
79
+ transition:
80
+ opacity var(--tile-hover-duration, 220ms) ease,
81
+ transform var(--tile-hover-duration, 220ms) ease,
82
+ color var(--tile-hover-duration, 220ms) ease;
83
+ }
84
+
85
+ .node:hover .nodeInner svg {
86
+ opacity: 1;
87
+ transform: scale(0.92);
88
+ }
89
+
90
+ .dot {
91
+ fill: var(--accent-primary);
92
+ filter: drop-shadow(
93
+ 0 0 8px color-mix(in srgb, var(--accent-primary) 32%, transparent)
94
+ );
95
+ }
96
+
97
+ .srOnly {
98
+ position: absolute;
99
+ width: 1px;
100
+ height: 1px;
101
+ padding: 0;
102
+ margin: -1px;
103
+ overflow: hidden;
104
+ clip: rect(0, 0, 0, 0);
105
+ white-space: nowrap;
106
+ border: 0;
107
+ }
108
+
109
+ @keyframes orbitPath {
110
+ from {
111
+ stroke-dashoffset: 0;
112
+ }
113
+
114
+ to {
115
+ stroke-dashoffset: -100;
116
+ }
117
+ }
118
+
119
+ @keyframes orbitPulse {
120
+ 0%,
121
+ 4%,
122
+ 16%,
123
+ 100% {
124
+ color: color-mix(in srgb, var(--text-secondary) 92%, transparent);
125
+ border-color: color-mix(in srgb, var(--border-color) 78%, transparent);
126
+ background: color-mix(in srgb, var(--bg-secondary) 94%, transparent);
127
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--bg-primary) 28%, transparent);
128
+ }
129
+
130
+ 6%,
131
+ 13% {
132
+ color: var(--text-primary);
133
+ border-color: color-mix(in srgb, var(--accent-primary) 64%, var(--border-color));
134
+ background: color-mix(in srgb, var(--accent-primary) 12%, var(--bg-secondary));
135
+ box-shadow:
136
+ 0 0 0 1px color-mix(in srgb, var(--accent-primary) 24%, transparent),
137
+ 0 0 22px color-mix(in srgb, var(--accent-primary) 18%, transparent);
138
+ }
139
+ }
140
+
141
+ @media (max-width: 720px) {
142
+ .root {
143
+ min-height: 18rem;
144
+ }
145
+
146
+ .node {
147
+ width: clamp(3.55rem, 17vw, 4.25rem);
148
+ }
149
+ }
150
+
151
+ @media (prefers-reduced-motion: reduce) {
152
+ .pathLine,
153
+ .node {
154
+ animation: none;
155
+ }
156
+
157
+ .dot {
158
+ display: none;
159
+ }
160
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedControl.js","sourceRoot":"","sources":["../../src/components/SegmentedControl.tsx"],"names":[],"mappings":";AAEA,OAAO,MAAM,MAAM,+BAA+B,CAAC;AAkBnD,MAAM,UAAU,gBAAgB,CAAC,EAC/B,KAAK,EACL,OAAO,EACP,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,SAAS,EACT,SAAS,GAAG,EAAE,EACd,OAAO,GAAG,KAAK,GACO;IACtB,OAAO,CACL,eAAK,SAAS,EAAE,GAAG,MAAM,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC,IAAI,EAAE,aACpD,KAAK,CAAC,CAAC,CAAC,cAAK,SAAS,EAAE,MAAM,CAAC,KAAK,YAAG,KAAK,GAAO,CAAC,CAAC,CAAC,IAAI,EAC3D,cACE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EACzE,IAAI,EAAC,SAAS,gBACF,SAAS,IAAI,KAAK,YAE7B,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;oBACtB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC;oBACxC,OAAO,CACL,iBAEE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,KAAK,mBACK,QAAQ,EACvB,SAAS,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAClH,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,YAEpC,MAAM,CAAC,KAAK,IAPR,MAAM,CAAC,KAAK,CAQV,CACV,CAAC;gBACJ,CAAC,CAAC,GACE,EACL,IAAI,CAAC,CAAC,CAAC,cAAK,SAAS,EAAE,MAAM,CAAC,IAAI,YAAG,IAAI,GAAO,CAAC,CAAC,CAAC,IAAI,IACpD,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"SegmentedControl.js","sourceRoot":"","sources":["../../src/components/SegmentedControl.tsx"],"names":[],"mappings":";AAEA,OAAO,MAAM,MAAM,+BAA+B,CAAC;AAkBnD,MAAM,UAAU,gBAAgB,CAAC,EAC/B,KAAK,EACL,OAAO,EACP,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,SAAS,EACT,SAAS,GAAG,EAAE,EACd,OAAO,GAAG,KAAK,GACO;IACtB,OAAO,CACL,eAAK,SAAS,EAAE,GAAG,MAAM,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC,IAAI,EAAE,aACpD,KAAK,CAAC,CAAC,CAAC,cAAK,SAAS,EAAE,MAAM,CAAC,KAAK,YAAG,KAAK,GAAO,CAAC,CAAC,CAAC,IAAI,EAC3D,cACE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EACzE,IAAI,EAAC,SAAS,gBACF,SAAS,IAAI,KAAK,YAE7B,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;oBACtB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC;oBACxC,OAAO,CACL,iBAEE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,KAAK,mBACK,QAAQ,EACvB,SAAS,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAClH,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,YAEpC,MAAM,CAAC,KAAK,IAPR,MAAM,CAAC,KAAK,CAQV,CACV,CAAC;gBACJ,CAAC,CAAC,GACE,EACL,IAAI,CAAC,CAAC,CAAC,cAAK,SAAS,EAAE,MAAM,CAAC,IAAI,YAAG,IAAI,GAAO,CAAC,CAAC,CAAC,IAAI,IACpD,CACP,CAAC;AACJ,CAAC","sourcesContent":["import React from \"react\";\n\nimport styles from \"./SegmentedControl.module.css\";\n\nexport interface SegmentedControlOption {\n value: string;\n label: string;\n}\n\nexport interface SegmentedControlProps {\n value: string;\n options: SegmentedControlOption[];\n onChange: (value: string) => void;\n label?: string;\n hint?: string;\n ariaLabel?: string;\n className?: string;\n compact?: boolean;\n}\n\nexport function SegmentedControl({\n value,\n options,\n onChange,\n label,\n hint,\n ariaLabel,\n className = \"\",\n compact = false,\n}: SegmentedControlProps) {\n return (\n <div className={`${styles.wrapper} ${className}`.trim()}>\n {label ? <div className={styles.label}>{label}</div> : null}\n <div\n className={`${styles.track} ${compact ? styles.trackCompact : \"\"}`.trim()}\n role=\"tablist\"\n aria-label={ariaLabel || label}\n >\n {options.map((option) => {\n const isActive = option.value === value;\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n className={`${styles.option} ${isActive ? styles.optionActive : \"\"} ${compact ? styles.optionCompact : \"\"}`.trim()}\n onClick={() => onChange(option.value)}\n >\n {option.label}\n </button>\n );\n })}\n </div>\n {hint ? <div className={styles.hint}>{hint}</div> : null}\n </div>\n );\n}\n\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"StatusMessage.js","sourceRoot":"","sources":["../../src/components/StatusMessage.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEjE,OAAO,MAAM,MAAM,4BAA4B,CAAC;AAOhD,MAAM,UAAU,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAsB;IACjE,OAAO,CACL,eACE,SAAS,EAAE,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EACrD,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,eAChC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,aAEpD,gBAAM,SAAS,EAAE,MAAM,CAAC,IAAI,aACzB,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAC,SAAS,IAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,IAAI,EAChE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAC,SAAS,IAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,IAAI,EAC9D,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,IAAI,IACxD,EACP,eAAM,SAAS,EAAE,MAAM,CAAC,IAAI,YAAG,OAAO,GAAQ,IAC1C,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"StatusMessage.js","sourceRoot":"","sources":["../../src/components/StatusMessage.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEjE,OAAO,MAAM,MAAM,4BAA4B,CAAC;AAOhD,MAAM,UAAU,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAsB;IACjE,OAAO,CACL,eACE,SAAS,EAAE,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EACrD,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,eAChC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,aAEpD,gBAAM,SAAS,EAAE,MAAM,CAAC,IAAI,aACzB,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAC,SAAS,IAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,IAAI,EAChE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAC,SAAS,IAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,IAAI,EAC9D,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,IAAI,IACxD,EACP,eAAM,SAAS,EAAE,MAAM,CAAC,IAAI,YAAG,OAAO,GAAQ,IAC1C,CACP,CAAC;AACJ,CAAC","sourcesContent":["import React from \"react\";\n\nimport { CheckIcon, ErrorIcon, InfoIcon } from \"@steez-ui/icons\";\n\nimport styles from \"./StatusMessage.module.css\";\n\nexport interface StatusMessageProps {\n message: string;\n type: \"success\" | \"error\" | \"info\";\n}\n\nexport function StatusMessage({ message, type }: StatusMessageProps) {\n return (\n <div\n className={`${styles.message} ${styles[type]}`.trim()}\n role={type === \"error\" ? \"alert\" : \"status\"}\n aria-live={type === \"error\" ? \"assertive\" : \"polite\"}\n >\n <span className={styles.icon}>\n {type === \"success\" ? <CheckIcon width={16} height={16} /> : null}\n {type === \"error\" ? <ErrorIcon width={16} height={16} /> : null}\n {type === \"info\" ? <InfoIcon width={16} height={16} /> : null}\n </span>\n <span className={styles.text}>{message}</span>\n </div>\n );\n}\n\n"]}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ export interface StrokedTextProps extends React.HTMLAttributes<HTMLSpanElement> {
3
+ children: React.ReactNode;
4
+ color?: string;
5
+ strokeWidth?: number | string;
6
+ animateOnMount?: boolean;
7
+ fallbackOpacity?: number;
8
+ }
9
+ export declare function StrokedText({ children, color, strokeWidth, animateOnMount, fallbackOpacity, className, style, ...props }: StrokedTextProps): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=StrokedText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StrokedText.d.ts","sourceRoot":"","sources":["../../src/components/StrokedText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;IAC7E,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,KAAK,EACL,WAAyC,EACzC,cAAsB,EACtB,eAAsB,EACtB,SAAc,EACd,KAAK,EACL,GAAG,KAAK,EACT,EAAE,gBAAgB,2CAkBlB"}
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import styles from "./StrokedText.module.css";
3
+ export function StrokedText({ children, color, strokeWidth = "clamp(1px, 0.11vw, 1.8px)", animateOnMount = false, fallbackOpacity = 0.18, className = "", style, ...props }) {
4
+ const mergedStyle = {
5
+ ...style,
6
+ ["--stroked-text-color"]: color,
7
+ ["--stroked-text-width"]: typeof strokeWidth === "number" ? `${strokeWidth}px` : strokeWidth,
8
+ ["--stroked-text-fallback-opacity"]: String(fallbackOpacity),
9
+ };
10
+ return (_jsx("span", { className: `${styles.root} ${animateOnMount ? styles.animateOnMount : ""} ${className}`.trim(), style: mergedStyle, ...props, children: children }));
11
+ }
12
+ //# sourceMappingURL=StrokedText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StrokedText.js","sourceRoot":"","sources":["../../src/components/StrokedText.tsx"],"names":[],"mappings":";AAEA,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAU9C,MAAM,UAAU,WAAW,CAAC,EAC1B,QAAQ,EACR,KAAK,EACL,WAAW,GAAG,2BAA2B,EACzC,cAAc,GAAG,KAAK,EACtB,eAAe,GAAG,IAAI,EACtB,SAAS,GAAG,EAAE,EACd,KAAK,EACL,GAAG,KAAK,EACS;IACjB,MAAM,WAAW,GAAG;QAClB,GAAG,KAAK;QACR,CAAC,sBAAgC,CAAC,EAAE,KAAK;QACzC,CAAC,sBAAgC,CAAC,EAChC,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,CAAC,CAAC,CAAC,WAAW;QACpE,CAAC,iCAA2C,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC;KAChD,CAAC;IAEzB,OAAO,CACL,eACE,SAAS,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,EAAE,CAAC,IAAI,EAAE,EAC9F,KAAK,EAAE,WAAW,KACd,KAAK,YAER,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC","sourcesContent":["import React from \"react\";\n\nimport styles from \"./StrokedText.module.css\";\n\nexport interface StrokedTextProps extends React.HTMLAttributes<HTMLSpanElement> {\n children: React.ReactNode;\n color?: string;\n strokeWidth?: number | string;\n animateOnMount?: boolean;\n fallbackOpacity?: number;\n}\n\nexport function StrokedText({\n children,\n color,\n strokeWidth = \"clamp(1px, 0.11vw, 1.8px)\",\n animateOnMount = false,\n fallbackOpacity = 0.18,\n className = \"\",\n style,\n ...props\n}: StrokedTextProps) {\n const mergedStyle = {\n ...style,\n [\"--stroked-text-color\" as string]: color,\n [\"--stroked-text-width\" as string]:\n typeof strokeWidth === \"number\" ? `${strokeWidth}px` : strokeWidth,\n [\"--stroked-text-fallback-opacity\" as string]: String(fallbackOpacity),\n } as React.CSSProperties;\n\n return (\n <span\n className={`${styles.root} ${animateOnMount ? styles.animateOnMount : \"\"} ${className}`.trim()}\n style={mergedStyle}\n {...props}\n >\n {children}\n </span>\n );\n}\n"]}
@@ -0,0 +1,63 @@
1
+ .root {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ color: transparent;
5
+ -webkit-text-stroke: var(--stroked-text-width, 1px)
6
+ var(--stroked-text-color, var(--accent-primary));
7
+ paint-order: stroke fill;
8
+ white-space: nowrap;
9
+ }
10
+
11
+ .animateOnMount {
12
+ animation: strokedTextBlink 1s steps(1, end) 0.18s both;
13
+ }
14
+
15
+ @supports not (-webkit-text-stroke: 1px black) {
16
+ .root {
17
+ color: var(--stroked-text-color, var(--accent-primary));
18
+ }
19
+
20
+ .animateOnMount {
21
+ animation: strokedTextFallbackBlink 1s steps(1, end) 0.18s both;
22
+ }
23
+ }
24
+
25
+ @keyframes strokedTextBlink {
26
+ 0%,
27
+ 14%,
28
+ 32%,
29
+ 50%,
30
+ 68%,
31
+ 100% {
32
+ color: transparent;
33
+ -webkit-text-stroke-color: var(--stroked-text-color, var(--accent-primary));
34
+ }
35
+
36
+ 18%,
37
+ 36%,
38
+ 54%,
39
+ 72%,
40
+ 90% {
41
+ color: var(--stroked-text-color, var(--accent-primary));
42
+ -webkit-text-stroke-color: transparent;
43
+ }
44
+ }
45
+
46
+ @keyframes strokedTextFallbackBlink {
47
+ 0%,
48
+ 14%,
49
+ 32%,
50
+ 50%,
51
+ 68%,
52
+ 100% {
53
+ opacity: var(--stroked-text-fallback-opacity, 0.18);
54
+ }
55
+
56
+ 18%,
57
+ 36%,
58
+ 54%,
59
+ 72%,
60
+ 90% {
61
+ opacity: 1;
62
+ }
63
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"TabbedPanel.js","sourceRoot":"","sources":["../../src/components/TabbedPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TabbedPanel.js","sourceRoot":"","sources":["../../src/components/TabbedPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\n\nimport styles from \"./TabbedPanel.module.css\";\n\nexport interface TabbedPanelTab {\n id: string;\n label: string;\n content?: React.ReactNode;\n panel?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface TabbedPanelProps {\n tabs: TabbedPanelTab[];\n activeTab?: string;\n defaultTab?: string;\n onTabChange?: (tabId: string) => void;\n onChange?: (tabId: string) => void;\n label?: string;\n hint?: string;\n ariaLabel?: string;\n className?: string;\n navClassName?: string;\n panelClassName?: string;\n}\n\nexport function TabbedPanel({\n tabs,\n activeTab,\n defaultTab,\n onTabChange,\n onChange,\n label,\n hint,\n ariaLabel,\n className = \"\",\n navClassName = \"\",\n panelClassName = \"\",\n}: TabbedPanelProps) {\n const isControlled = typeof activeTab === \"string\";\n const initialTabId = defaultTab || activeTab || tabs[0]?.id || \"\";\n const [internalTabId, setInternalTabId] = React.useState(initialTabId);\n const currentTabId = isControlled ? activeTab || tabs[0]?.id || \"\" : internalTabId;\n const currentTab = tabs.find((tab) => tab.id === currentTabId) ?? tabs[0];\n\n React.useEffect(() => {\n if (!tabs.length) {\n return;\n }\n\n if (tabs.some((tab) => tab.id === currentTabId)) {\n return;\n }\n\n const fallbackTabId = defaultTab || activeTab || tabs[0]?.id || \"\";\n if (!isControlled) {\n setInternalTabId(fallbackTabId);\n }\n onTabChange?.(fallbackTabId);\n onChange?.(fallbackTabId);\n }, [activeTab, currentTabId, defaultTab, isControlled, onChange, onTabChange, tabs]);\n\n const handleSelect = React.useCallback(\n (tabId: string) => {\n if (!isControlled) {\n setInternalTabId(tabId);\n }\n onTabChange?.(tabId);\n onChange?.(tabId);\n },\n [isControlled, onChange, onTabChange],\n );\n\n return (\n <div className={`${styles.root} ${className}`.trim()}>\n {label || hint ? (\n <div className={styles.header}>\n {label ? <div className={styles.label}>{label}</div> : null}\n {hint ? <div className={styles.hint}>{hint}</div> : null}\n </div>\n ) : null}\n <div className={`${styles.tabs} ${navClassName}`.trim()} role=\"tablist\" aria-label={ariaLabel || label}>\n {tabs.map((tab) => {\n const isActive = tab.id === currentTab?.id;\n return (\n <button\n key={tab.id}\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n disabled={tab.disabled}\n className={`${styles.tab} ${isActive ? styles.tabActive : \"\"}`.trim()}\n onClick={() => handleSelect(tab.id)}\n >\n {tab.label}\n </button>\n );\n })}\n </div>\n <div className={`${styles.panel} ${panelClassName}`.trim()} role=\"tabpanel\">\n <div className={styles.panelBody}>{currentTab?.content ?? currentTab?.panel ?? null}</div>\n </div>\n </div>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeToggle.js","sourceRoot":"","sources":["../../src/components/ThemeToggle.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAS9C,MAAM,UAAU,WAAW,CAAC,EAC1B,UAAU,GAAG,OAAO,EACpB,YAAY,GAAG,MAAM,EACrB,SAAS,GAAG,EAAE,EACd,aAAa,GACI;IACjB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmB,YAAY,CAAC,CAAC;IAEnE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAA4B,CAAC;QACtF,MAAM,YAAY,GAAG,UAAU,IAAI,YAAY,CAAC;QAChD,QAAQ,CAAC,YAAY,CAAC,CAAC;QACvB,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACpE,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAE/B,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,MAAM,QAAQ,GAAG,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QACrD,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnB,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAClD,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC9D,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC,CAAC;IAEF,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,IAAI,SAAS,EAAE,CAAC,IAAI,EAAE,EAC3E,OAAO,EAAE,WAAW,gBACR,aAAa,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,EACnE,KAAK,EAAE,aAAa,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,YAE7D,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,KAAC,OAAO,IAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,KAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,GACrF,CACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ThemeToggle.js","sourceRoot":"","sources":["../../src/components/ThemeToggle.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAS9C,MAAM,UAAU,WAAW,CAAC,EAC1B,UAAU,GAAG,OAAO,EACpB,YAAY,GAAG,MAAM,EACrB,SAAS,GAAG,EAAE,EACd,aAAa,GACI;IACjB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmB,YAAY,CAAC,CAAC;IAEnE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAA4B,CAAC;QACtF,MAAM,YAAY,GAAG,UAAU,IAAI,YAAY,CAAC;QAChD,QAAQ,CAAC,YAAY,CAAC,CAAC;QACvB,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACpE,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAE/B,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,MAAM,QAAQ,GAAG,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QACrD,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnB,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAClD,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC9D,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC,CAAC;IAEF,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,IAAI,SAAS,EAAE,CAAC,IAAI,EAAE,EAC3E,OAAO,EAAE,WAAW,gBACR,aAAa,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,EACnE,KAAK,EAAE,aAAa,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,YAE7D,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,KAAC,OAAO,IAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,KAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,GACrF,CACV,CAAC;AACJ,CAAC","sourcesContent":["import React, { useEffect, useState } from \"react\";\n\nimport { MoonIcon, SunIcon } from \"@steez-ui/icons\";\n\nimport styles from \"./ThemeToggle.module.css\";\n\nexport interface ThemeToggleProps {\n storageKey?: string;\n defaultTheme?: \"dark\" | \"light\";\n className?: string;\n onThemeChange?: (theme: \"dark\" | \"light\") => void;\n}\n\nexport function ThemeToggle({\n storageKey = \"theme\",\n defaultTheme = \"dark\",\n className = \"\",\n onThemeChange,\n}: ThemeToggleProps) {\n const [theme, setTheme] = useState<\"dark\" | \"light\">(defaultTheme);\n\n useEffect(() => {\n const savedTheme = window.localStorage.getItem(storageKey) as \"dark\" | \"light\" | null;\n const initialTheme = savedTheme || defaultTheme;\n setTheme(initialTheme);\n document.documentElement.setAttribute(\"data-theme\", initialTheme);\n }, [defaultTheme, storageKey]);\n\n const toggleTheme = () => {\n const newTheme = theme === \"dark\" ? \"light\" : \"dark\";\n setTheme(newTheme);\n window.localStorage.setItem(storageKey, newTheme);\n document.documentElement.setAttribute(\"data-theme\", newTheme);\n onThemeChange?.(newTheme);\n };\n\n return (\n <button\n type=\"button\"\n className={`${styles.themeToggle} ${styles.iconButton} ${className}`.trim()}\n onClick={toggleTheme}\n aria-label={`Switch to ${theme === \"dark\" ? \"light\" : \"dark\"} mode`}\n title={`Switch to ${theme === \"dark\" ? \"light\" : \"dark\"} mode`}\n >\n {theme === \"dark\" ? <SunIcon width={14} height={14} /> : <MoonIcon width={14} height={14} />}\n </button>\n );\n}\n\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ThemedCard.js","sourceRoot":"","sources":["../../src/components/ThemedCard.tsx"],"names":[],"mappings":";AAEA,OAAO,MAAM,MAAM,yBAAyB,CAAC;AAQ7C,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,OAAO,GAAG,SAAS,EACnB,SAAS,GAAG,EAAE,EACd,QAAQ,EACR,GAAG,KAAK,EACQ;IAChB,OAAO,CACL,eAAK,SAAS,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,EAAE,CAAC,IAAI,EAAE,KAAM,KAAK,aAC7G,KAAK,CAAC,CAAC,CAAC,cAAK,SAAS,EAAE,MAAM,CAAC,KAAK,YAAG,KAAK,GAAO,CAAC,CAAC,CAAC,IAAI,EAC1D,QAAQ,IACL,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ThemedCard.js","sourceRoot":"","sources":["../../src/components/ThemedCard.tsx"],"names":[],"mappings":";AAEA,OAAO,MAAM,MAAM,yBAAyB,CAAC;AAQ7C,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,OAAO,GAAG,SAAS,EACnB,SAAS,GAAG,EAAE,EACd,QAAQ,EACR,GAAG,KAAK,EACQ;IAChB,OAAO,CACL,eAAK,SAAS,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,EAAE,CAAC,IAAI,EAAE,KAAM,KAAK,aAC7G,KAAK,CAAC,CAAC,CAAC,cAAK,SAAS,EAAE,MAAM,CAAC,KAAK,YAAG,KAAK,GAAO,CAAC,CAAC,CAAC,IAAI,EAC1D,QAAQ,IACL,CACP,CAAC;AACJ,CAAC","sourcesContent":["import React from \"react\";\n\nimport styles from \"./ThemedCard.module.css\";\n\nexport interface ThemedCardProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n title?: React.ReactNode;\n variant?: \"default\" | \"featured\";\n}\n\nexport function ThemedCard({\n title,\n variant = \"default\",\n className = \"\",\n children,\n ...props\n}: ThemedCardProps) {\n return (\n <div className={`${styles.card} ${variant === \"featured\" ? styles.featured : \"\"} ${className}`.trim()} {...props}>\n {title ? <div className={styles.title}>{title}</div> : null}\n {children}\n </div>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"useStableId.js","sourceRoot":"","sources":["../../src/hooks/useStableId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,UAAmB;IAC7D,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC1C,OAAO,UAAU,IAAI,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"useStableId.js","sourceRoot":"","sources":["../../src/hooks/useStableId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,UAAmB;IAC7D,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC1C,OAAO,UAAU,IAAI,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC;AAC9C,CAAC","sourcesContent":["import { useId } from \"react\";\n\nexport function useStableId(prefix: string, explicitId?: string): string {\n const reactId = useId().replace(/:/g, \"\");\n return explicitId || `${prefix}-${reactId}`;\n}\n\n"]}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ export { AvatarStage, type AvatarStageProps } from "./components/AvatarStage.js";
2
+ export { BlinkText, type BlinkTextProps } from "./components/BlinkText.js";
1
3
  export { Button, type ButtonProps } from "./components/Button.js";
2
4
  export { CopyButton, type CopyButtonProps } from "./components/CopyButton.js";
3
5
  export { CyberpunkCheckbox, type CyberpunkCheckboxProps } from "./components/CyberpunkCheckbox.js";
@@ -9,11 +11,16 @@ export { CyberpunkTextarea, type CyberpunkTextareaProps, } from "./components/Cy
9
11
  export { CyberpunkTile, type CyberpunkTileProps } from "./components/CyberpunkTile.js";
10
12
  export { CornerBracketCard, type CornerBracketCardProps } from "./components/CornerBracketCard.js";
11
13
  export { ErrorMessage, type ErrorMessageProps } from "./components/ErrorMessage.js";
14
+ export { HeartbeatIndicator, HeartbeatPulse, type HeartbeatIndicatorProps, type HeartbeatPulseProps, } from "./components/HeartbeatPulse.js";
15
+ export { HexagonGrid, type HexagonGridProps } from "./components/HexagonGrid.js";
12
16
  export { LOADING_PROGRESS_SEGMENT_COUNT, LoadingProgressBar, type LoadingProgressBarProps, } from "./components/LoadingProgressBar.js";
17
+ export { MarqueeStrip, type MarqueeStripProps } from "./components/MarqueeStrip.js";
13
18
  export { PageHeader, type PageHeaderProps } from "./components/PageHeader.js";
14
19
  export { PageTemplate, type PageTemplateProps } from "./components/PageTemplate.js";
20
+ export { RuntimeOrbitDiagram, type RuntimeOrbitDiagramProps, type RuntimeOrbitNode, } from "./components/RuntimeOrbitDiagram.js";
15
21
  export { SegmentedControl, type SegmentedControlOption, type SegmentedControlProps, } from "./components/SegmentedControl.js";
16
22
  export { StatusMessage, type StatusMessageProps } from "./components/StatusMessage.js";
23
+ export { StrokedText, type StrokedTextProps } from "./components/StrokedText.js";
17
24
  export { TabbedPanel, type TabbedPanelProps, type TabbedPanelTab } from "./components/TabbedPanel.js";
18
25
  export { ThemedCard, type ThemedCardProps } from "./components/ThemedCard.js";
19
26
  export { ThemeToggle, type ThemeToggleProps } from "./components/ThemeToggle.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AACnG,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,GACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,GACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,eAAe,EACf,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,GAC1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,GAC1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,GAC5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,EACL,8BAA8B,EAC9B,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,EACL,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACtG,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AACnG,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,GACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,GACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,eAAe,EACf,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,GAC1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,GAC1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,GAC5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,GACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EACL,8BAA8B,EAC9B,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,GACtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACtG,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,5 @@
1
+ export { AvatarStage } from "./components/AvatarStage.js";
2
+ export { BlinkText } from "./components/BlinkText.js";
1
3
  export { Button } from "./components/Button.js";
2
4
  export { CopyButton } from "./components/CopyButton.js";
3
5
  export { CyberpunkCheckbox } from "./components/CyberpunkCheckbox.js";
@@ -9,11 +11,16 @@ export { CyberpunkTextarea, } from "./components/CyberpunkTextarea.js";
9
11
  export { CyberpunkTile } from "./components/CyberpunkTile.js";
10
12
  export { CornerBracketCard } from "./components/CornerBracketCard.js";
11
13
  export { ErrorMessage } from "./components/ErrorMessage.js";
14
+ export { HeartbeatIndicator, HeartbeatPulse, } from "./components/HeartbeatPulse.js";
15
+ export { HexagonGrid } from "./components/HexagonGrid.js";
12
16
  export { LOADING_PROGRESS_SEGMENT_COUNT, LoadingProgressBar, } from "./components/LoadingProgressBar.js";
17
+ export { MarqueeStrip } from "./components/MarqueeStrip.js";
13
18
  export { PageHeader } from "./components/PageHeader.js";
14
19
  export { PageTemplate } from "./components/PageTemplate.js";
20
+ export { RuntimeOrbitDiagram, } from "./components/RuntimeOrbitDiagram.js";
15
21
  export { SegmentedControl, } from "./components/SegmentedControl.js";
16
22
  export { StatusMessage } from "./components/StatusMessage.js";
23
+ export { StrokedText } from "./components/StrokedText.js";
17
24
  export { TabbedPanel } from "./components/TabbedPanel.js";
18
25
  export { ThemedCard } from "./components/ThemedCard.js";
19
26
  export { ThemeToggle } from "./components/ThemeToggle.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoB,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAwB,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAA+B,MAAM,mCAAmC,CAAC;AACnG,OAAO,EACL,cAAc,GAEf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,cAAc,EACd,mBAAmB,GAGpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,eAAe,GAGhB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,eAAe,GAEhB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,iBAAiB,GAElB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,aAAa,EAA2B,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAA+B,MAAM,mCAAmC,CAAC;AACnG,OAAO,EAAE,YAAY,EAA0B,MAAM,8BAA8B,CAAC;AACpF,OAAO,EACL,8BAA8B,EAC9B,kBAAkB,GAEnB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAwB,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,YAAY,EAA0B,MAAM,8BAA8B,CAAC;AACpF,OAAO,EACL,gBAAgB,GAGjB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,aAAa,EAA2B,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,WAAW,EAA8C,MAAM,6BAA6B,CAAC;AACtG,OAAO,EAAE,UAAU,EAAwB,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAyB,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAyB,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,SAAS,EAAuB,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAoB,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAwB,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAA+B,MAAM,mCAAmC,CAAC;AACnG,OAAO,EACL,cAAc,GAEf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,cAAc,EACd,mBAAmB,GAGpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,eAAe,GAGhB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,eAAe,GAEhB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,iBAAiB,GAElB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,aAAa,EAA2B,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAA+B,MAAM,mCAAmC,CAAC;AACnG,OAAO,EAAE,YAAY,EAA0B,MAAM,8BAA8B,CAAC;AACpF,OAAO,EACL,kBAAkB,EAClB,cAAc,GAGf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,WAAW,EAAyB,MAAM,6BAA6B,CAAC;AACjF,OAAO,EACL,8BAA8B,EAC9B,kBAAkB,GAEnB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,YAAY,EAA0B,MAAM,8BAA8B,CAAC;AACpF,OAAO,EAAE,UAAU,EAAwB,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,YAAY,EAA0B,MAAM,8BAA8B,CAAC;AACpF,OAAO,EACL,mBAAmB,GAGpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,gBAAgB,GAGjB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,aAAa,EAA2B,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,WAAW,EAAyB,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,WAAW,EAA8C,MAAM,6BAA6B,CAAC;AACtG,OAAO,EAAE,UAAU,EAAwB,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAyB,MAAM,6BAA6B,CAAC","sourcesContent":["export { AvatarStage, type AvatarStageProps } from \"./components/AvatarStage.js\";\nexport { BlinkText, type BlinkTextProps } from \"./components/BlinkText.js\";\nexport { Button, type ButtonProps } from \"./components/Button.js\";\nexport { CopyButton, type CopyButtonProps } from \"./components/CopyButton.js\";\nexport { CyberpunkCheckbox, type CyberpunkCheckboxProps } from \"./components/CyberpunkCheckbox.js\";\nexport {\n CyberpunkInput,\n type CyberpunkInputProps,\n} from \"./components/CyberpunkInput.js\";\nexport {\n CyberpunkRadio,\n CyberpunkRadioGroup,\n type CyberpunkRadioGroupProps,\n type CyberpunkRadioProps,\n} from \"./components/CyberpunkRadio.js\";\nexport {\n CyberpunkSelect,\n type CyberpunkSelectOption,\n type CyberpunkSelectProps,\n} from \"./components/CyberpunkSelect.js\";\nexport {\n CyberpunkSlider,\n type CyberpunkSliderProps,\n} from \"./components/CyberpunkSlider.js\";\nexport {\n CyberpunkTextarea,\n type CyberpunkTextareaProps,\n} from \"./components/CyberpunkTextarea.js\";\nexport { CyberpunkTile, type CyberpunkTileProps } from \"./components/CyberpunkTile.js\";\nexport { CornerBracketCard, type CornerBracketCardProps } from \"./components/CornerBracketCard.js\";\nexport { ErrorMessage, type ErrorMessageProps } from \"./components/ErrorMessage.js\";\nexport {\n HeartbeatIndicator,\n HeartbeatPulse,\n type HeartbeatIndicatorProps,\n type HeartbeatPulseProps,\n} from \"./components/HeartbeatPulse.js\";\nexport { HexagonGrid, type HexagonGridProps } from \"./components/HexagonGrid.js\";\nexport {\n LOADING_PROGRESS_SEGMENT_COUNT,\n LoadingProgressBar,\n type LoadingProgressBarProps,\n} from \"./components/LoadingProgressBar.js\";\nexport { MarqueeStrip, type MarqueeStripProps } from \"./components/MarqueeStrip.js\";\nexport { PageHeader, type PageHeaderProps } from \"./components/PageHeader.js\";\nexport { PageTemplate, type PageTemplateProps } from \"./components/PageTemplate.js\";\nexport {\n RuntimeOrbitDiagram,\n type RuntimeOrbitDiagramProps,\n type RuntimeOrbitNode,\n} from \"./components/RuntimeOrbitDiagram.js\";\nexport {\n SegmentedControl,\n type SegmentedControlOption,\n type SegmentedControlProps,\n} from \"./components/SegmentedControl.js\";\nexport { StatusMessage, type StatusMessageProps } from \"./components/StatusMessage.js\";\nexport { StrokedText, type StrokedTextProps } from \"./components/StrokedText.js\";\nexport { TabbedPanel, type TabbedPanelProps, type TabbedPanelTab } from \"./components/TabbedPanel.js\";\nexport { ThemedCard, type ThemedCardProps } from \"./components/ThemedCard.js\";\nexport { ThemeToggle, type ThemeToggleProps } from \"./components/ThemeToggle.js\";\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steez-ui/ui",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "React primitives authored with CSS modules for Steez UI.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -12,8 +12,8 @@
12
12
  "react-dom": ">=18"
13
13
  },
14
14
  "dependencies": {
15
- "@steez-ui/icons": "^0.1.3",
16
- "@steez-ui/theme": "^0.1.3"
15
+ "@steez-ui/icons": "^0.1.5",
16
+ "@steez-ui/theme": "^0.1.5"
17
17
  },
18
18
  "exports": {
19
19
  ".": {