@hanzo/ui 8.0.60 → 8.0.62

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 (113) hide show
  1. package/dist/backends/gui/input.cjs +4 -3
  2. package/dist/backends/gui/input.d.ts +10 -2
  3. package/dist/backends/gui/input.d.ts.map +1 -1
  4. package/dist/backends/gui/input.js +4 -3
  5. package/dist/backends/gui/input.js.map +1 -1
  6. package/dist/backends/gui/mask.cjs +20 -0
  7. package/dist/backends/gui/mask.d.ts +17 -0
  8. package/dist/backends/gui/mask.d.ts.map +1 -0
  9. package/dist/backends/gui/mask.js +17 -0
  10. package/dist/backends/gui/mask.js.map +1 -0
  11. package/dist/chat/Code.cjs +1 -1
  12. package/dist/chat/Code.d.ts.map +1 -1
  13. package/dist/chat/Code.js +1 -1
  14. package/dist/chat/Code.js.map +1 -1
  15. package/dist/core/css.cjs +114 -0
  16. package/dist/core/css.d.ts +46 -0
  17. package/dist/core/css.d.ts.map +1 -0
  18. package/dist/core/css.js +112 -0
  19. package/dist/core/css.js.map +1 -0
  20. package/dist/product/CopyButton.cjs +16 -2
  21. package/dist/product/CopyButton.d.ts +30 -3
  22. package/dist/product/CopyButton.d.ts.map +1 -1
  23. package/dist/product/CopyButton.js +18 -4
  24. package/dist/product/CopyButton.js.map +1 -1
  25. package/dist/product/DataTable.cjs +4 -4
  26. package/dist/product/DataTable.js +4 -4
  27. package/dist/product/DataTable.js.map +1 -1
  28. package/dist/product/FadeIn.cjs +1 -1
  29. package/dist/product/FadeIn.js +1 -1
  30. package/dist/product/FadeIn.js.map +1 -1
  31. package/dist/product/Field.cjs +3 -3
  32. package/dist/product/Field.d.ts +21 -1
  33. package/dist/product/Field.d.ts.map +1 -1
  34. package/dist/product/Field.js +3 -3
  35. package/dist/product/Field.js.map +1 -1
  36. package/dist/product/Fieldset.cjs +10 -2
  37. package/dist/product/Fieldset.d.ts +12 -1
  38. package/dist/product/Fieldset.d.ts.map +1 -1
  39. package/dist/product/Fieldset.js +10 -2
  40. package/dist/product/Fieldset.js.map +1 -1
  41. package/dist/product/Metric.cjs +7 -4
  42. package/dist/product/Metric.d.ts +8 -1
  43. package/dist/product/Metric.d.ts.map +1 -1
  44. package/dist/product/Metric.js +7 -4
  45. package/dist/product/Metric.js.map +1 -1
  46. package/dist/product/Pagination.cjs +9 -49
  47. package/dist/product/Pagination.d.ts +2 -10
  48. package/dist/product/Pagination.d.ts.map +1 -1
  49. package/dist/product/Pagination.js +6 -46
  50. package/dist/product/Pagination.js.map +1 -1
  51. package/dist/product/Reorder.cjs +1 -1
  52. package/dist/product/Reorder.js +1 -1
  53. package/dist/product/Reorder.js.map +1 -1
  54. package/dist/product/SecretInput.cjs +3 -13
  55. package/dist/product/SecretInput.d.ts +2 -11
  56. package/dist/product/SecretInput.d.ts.map +1 -1
  57. package/dist/product/SecretInput.js +6 -11
  58. package/dist/product/SecretInput.js.map +1 -1
  59. package/dist/product/SlideOver.cjs +2 -2
  60. package/dist/product/SlideOver.js +2 -2
  61. package/dist/product/SlideOver.js.map +1 -1
  62. package/dist/product/StatusTag.cjs +10 -39
  63. package/dist/product/StatusTag.d.ts +6 -2
  64. package/dist/product/StatusTag.d.ts.map +1 -1
  65. package/dist/product/StatusTag.js +10 -39
  66. package/dist/product/StatusTag.js.map +1 -1
  67. package/dist/product/UserMenu.cjs +4 -10
  68. package/dist/product/UserMenu.d.ts +2 -3
  69. package/dist/product/UserMenu.d.ts.map +1 -1
  70. package/dist/product/UserMenu.js +5 -8
  71. package/dist/product/UserMenu.js.map +1 -1
  72. package/dist/product/animatedLogo.logic.cjs +1 -1
  73. package/dist/product/animatedLogo.logic.js +1 -1
  74. package/dist/product/brand.cjs +1 -1
  75. package/dist/product/brand.js +1 -1
  76. package/dist/product/combobox/filter.cjs +1 -1
  77. package/dist/product/combobox/filter.js +1 -1
  78. package/dist/product/index.cjs +14 -3
  79. package/dist/product/index.d.ts +1 -1
  80. package/dist/product/index.d.ts.map +1 -1
  81. package/dist/product/index.js +13 -1
  82. package/dist/product/index.js.map +1 -1
  83. package/dist/product/name.cjs +17 -0
  84. package/dist/product/name.d.ts +10 -0
  85. package/dist/product/name.d.ts.map +1 -0
  86. package/dist/product/name.js +15 -0
  87. package/dist/product/name.js.map +1 -0
  88. package/dist/product/pages.cjs +57 -0
  89. package/dist/product/pages.d.ts +28 -0
  90. package/dist/product/pages.d.ts.map +1 -0
  91. package/dist/product/pages.js +54 -0
  92. package/dist/product/pages.js.map +1 -0
  93. package/dist/product/pure.cjs +63 -0
  94. package/dist/product/pure.d.ts +9 -0
  95. package/dist/product/pure.d.ts.map +1 -0
  96. package/dist/product/pure.js +38 -0
  97. package/dist/product/pure.js.map +1 -0
  98. package/dist/product/scope.cjs +1 -1
  99. package/dist/product/scope.js +1 -1
  100. package/dist/product/social/SocialResource.cjs +1 -1
  101. package/dist/product/social/SocialResource.js +1 -1
  102. package/dist/product/social/SocialResource.js.map +1 -1
  103. package/dist/product/social/SocialSummaryBar.cjs +1 -1
  104. package/dist/product/social/SocialSummaryBar.js +1 -1
  105. package/dist/product/social/SocialSummaryBar.js.map +1 -1
  106. package/dist/product/tone.cjs +105 -0
  107. package/dist/product/tone.d.ts +52 -0
  108. package/dist/product/tone.d.ts.map +1 -0
  109. package/dist/product/tone.js +102 -0
  110. package/dist/product/tone.js.map +1 -0
  111. package/dist/styles/motion.css +52 -17
  112. package/dist/styles.css +53 -18
  113. package/package.json +35 -7
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ /**
3
+ * What a status string MEANS, and how a monochrome ladder says it.
4
+ *
5
+ * Provisioned things report free-form lifecycle strings — a cluster is
6
+ * `provisioning`, an invoice is `past_due`, a deploy is `succeeded` — and every
7
+ * list that renders them invented its own vocabulary. This is the one mapping.
8
+ *
9
+ * There are four tones and they are named for the STATE, not for a colour,
10
+ * because this system has no colour to spend: the pills are rungs of the grey
11
+ * ladder. `settled` is the steady state, `moving` is in flight, `stopped` will
12
+ * not proceed without you, `quiet` has nothing to report.
13
+ *
14
+ * `stopped` is set apart by an EDGE rather than a heavier fill, which is the
15
+ * same choice `Fieldset` makes for its destructive register: with hue
16
+ * unavailable, an outline is what distinguishes "this one" from its neighbours.
17
+ * Every tone therefore carries a border — transparent on three of them — so
18
+ * turning one on shifts no layout in a table of fifty rows.
19
+ *
20
+ * Pure data and one pure function: `@hanzo/ui/product/pure` exports both, so a
21
+ * billing surface can assert that `past_due` reads as an alarm without mounting
22
+ * a pill.
23
+ */
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.tone = exports.TONE = void 0;
26
+ /** The gui tokens each tone paints with. `as const` keeps the literal types the
27
+ * `bg`/`color`/`borderColor` unions require. */
28
+ exports.TONE = {
29
+ settled: { bg: '$color5', color: '$color12', borderColor: 'transparent' },
30
+ moving: { bg: '$color4', color: '$color12', borderColor: 'transparent' },
31
+ stopped: { bg: '$color4', color: '$color12', borderColor: '$color9' },
32
+ quiet: { bg: '$color3', color: '$color11', borderColor: 'transparent' },
33
+ };
34
+ /** `Past Due`, `past-due` and `PAST_DUE` are the same status. Fold the shapes a
35
+ * dozen backends spell it in down to one key before looking it up. */
36
+ const key = (status) => status.trim().toLowerCase().replace(/[^a-z0-9]+/g, '_');
37
+ const OF = {
38
+ // Platform health verdicts arrive as the traffic-light words themselves (the
39
+ // apps inventory reports green/yellow/red directly), so they are inputs here
40
+ // even though nothing downstream is coloured.
41
+ green: 'settled',
42
+ yellow: 'moving',
43
+ red: 'stopped',
44
+ // Resources and deploys — reached a steady state.
45
+ ready: 'settled',
46
+ active: 'settled',
47
+ running: 'settled',
48
+ available: 'settled',
49
+ ok: 'settled',
50
+ live: 'settled',
51
+ succeeded: 'settled',
52
+ connected: 'settled',
53
+ synced: 'settled',
54
+ imported: 'settled',
55
+ // Resources and deploys — in flight.
56
+ creating: 'moving',
57
+ provisioning: 'moving',
58
+ pending: 'moving',
59
+ updating: 'moving',
60
+ attaching: 'moving',
61
+ building: 'moving',
62
+ deploying: 'moving',
63
+ queued: 'moving',
64
+ importing: 'moving',
65
+ // Resources and deploys — stopped.
66
+ error: 'stopped',
67
+ failed: 'stopped',
68
+ degraded: 'stopped',
69
+ down: 'stopped',
70
+ canceled: 'stopped',
71
+ conflict: 'stopped',
72
+ // Money. An invoice, a charge or a subscription reports its own lifecycle and
73
+ // every billing surface in the fleet re-derived it: `paid` is done, `open` is
74
+ // waiting on the customer, `past_due` is waiting on someone to act, and a
75
+ // `draft` or a `void` invoice is a record of something that never happened.
76
+ paid: 'settled',
77
+ settled: 'settled',
78
+ complete: 'settled',
79
+ completed: 'settled',
80
+ fulfilled: 'settled',
81
+ trialing: 'settled',
82
+ open: 'moving',
83
+ processing: 'moving',
84
+ scheduled: 'moving',
85
+ incomplete: 'moving',
86
+ authorized: 'moving',
87
+ past_due: 'stopped',
88
+ overdue: 'stopped',
89
+ unpaid: 'stopped',
90
+ uncollectible: 'stopped',
91
+ disputed: 'stopped',
92
+ chargeback: 'stopped',
93
+ declined: 'stopped',
94
+ expired: 'stopped',
95
+ draft: 'quiet',
96
+ void: 'quiet',
97
+ voided: 'quiet',
98
+ refunded: 'quiet',
99
+ paused: 'quiet',
100
+ archived: 'quiet',
101
+ };
102
+ /** The tone a status reports in. Anything unrecognised is `quiet` — a status
103
+ * this table has never seen is not an alarm, it is an unknown. */
104
+ const tone = (status) => OF[key(status)] ?? 'quiet';
105
+ exports.tone = tone;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * What a status string MEANS, and how a monochrome ladder says it.
3
+ *
4
+ * Provisioned things report free-form lifecycle strings — a cluster is
5
+ * `provisioning`, an invoice is `past_due`, a deploy is `succeeded` — and every
6
+ * list that renders them invented its own vocabulary. This is the one mapping.
7
+ *
8
+ * There are four tones and they are named for the STATE, not for a colour,
9
+ * because this system has no colour to spend: the pills are rungs of the grey
10
+ * ladder. `settled` is the steady state, `moving` is in flight, `stopped` will
11
+ * not proceed without you, `quiet` has nothing to report.
12
+ *
13
+ * `stopped` is set apart by an EDGE rather than a heavier fill, which is the
14
+ * same choice `Fieldset` makes for its destructive register: with hue
15
+ * unavailable, an outline is what distinguishes "this one" from its neighbours.
16
+ * Every tone therefore carries a border — transparent on three of them — so
17
+ * turning one on shifts no layout in a table of fifty rows.
18
+ *
19
+ * Pure data and one pure function: `@hanzo/ui/product/pure` exports both, so a
20
+ * billing surface can assert that `past_due` reads as an alarm without mounting
21
+ * a pill.
22
+ */
23
+ /** The register a status reports in. */
24
+ export type Tone = 'settled' | 'moving' | 'stopped' | 'quiet';
25
+ /** The gui tokens each tone paints with. `as const` keeps the literal types the
26
+ * `bg`/`color`/`borderColor` unions require. */
27
+ export declare const TONE: {
28
+ readonly settled: {
29
+ readonly bg: "$color5";
30
+ readonly color: "$color12";
31
+ readonly borderColor: "transparent";
32
+ };
33
+ readonly moving: {
34
+ readonly bg: "$color4";
35
+ readonly color: "$color12";
36
+ readonly borderColor: "transparent";
37
+ };
38
+ readonly stopped: {
39
+ readonly bg: "$color4";
40
+ readonly color: "$color12";
41
+ readonly borderColor: "$color9";
42
+ };
43
+ readonly quiet: {
44
+ readonly bg: "$color3";
45
+ readonly color: "$color11";
46
+ readonly borderColor: "transparent";
47
+ };
48
+ };
49
+ /** The tone a status reports in. Anything unrecognised is `quiet` — a status
50
+ * this table has never seen is not an alarm, it is an unknown. */
51
+ export declare const tone: (status: string) => Tone;
52
+ //# sourceMappingURL=tone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tone.d.ts","sourceRoot":"","sources":["../../src/product/tone.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,wCAAwC;AACxC,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAA;AAE7D;iDACiD;AACjD,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;CAKP,CAAA;AA+EV;mEACmE;AACnE,eAAO,MAAM,IAAI,GAAI,QAAQ,MAAM,KAAG,IAAkC,CAAA"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * What a status string MEANS, and how a monochrome ladder says it.
3
+ *
4
+ * Provisioned things report free-form lifecycle strings — a cluster is
5
+ * `provisioning`, an invoice is `past_due`, a deploy is `succeeded` — and every
6
+ * list that renders them invented its own vocabulary. This is the one mapping.
7
+ *
8
+ * There are four tones and they are named for the STATE, not for a colour,
9
+ * because this system has no colour to spend: the pills are rungs of the grey
10
+ * ladder. `settled` is the steady state, `moving` is in flight, `stopped` will
11
+ * not proceed without you, `quiet` has nothing to report.
12
+ *
13
+ * `stopped` is set apart by an EDGE rather than a heavier fill, which is the
14
+ * same choice `Fieldset` makes for its destructive register: with hue
15
+ * unavailable, an outline is what distinguishes "this one" from its neighbours.
16
+ * Every tone therefore carries a border — transparent on three of them — so
17
+ * turning one on shifts no layout in a table of fifty rows.
18
+ *
19
+ * Pure data and one pure function: `@hanzo/ui/product/pure` exports both, so a
20
+ * billing surface can assert that `past_due` reads as an alarm without mounting
21
+ * a pill.
22
+ */
23
+ /** The gui tokens each tone paints with. `as const` keeps the literal types the
24
+ * `bg`/`color`/`borderColor` unions require. */
25
+ export const TONE = {
26
+ settled: { bg: '$color5', color: '$color12', borderColor: 'transparent' },
27
+ moving: { bg: '$color4', color: '$color12', borderColor: 'transparent' },
28
+ stopped: { bg: '$color4', color: '$color12', borderColor: '$color9' },
29
+ quiet: { bg: '$color3', color: '$color11', borderColor: 'transparent' },
30
+ };
31
+ /** `Past Due`, `past-due` and `PAST_DUE` are the same status. Fold the shapes a
32
+ * dozen backends spell it in down to one key before looking it up. */
33
+ const key = (status) => status.trim().toLowerCase().replace(/[^a-z0-9]+/g, '_');
34
+ const OF = {
35
+ // Platform health verdicts arrive as the traffic-light words themselves (the
36
+ // apps inventory reports green/yellow/red directly), so they are inputs here
37
+ // even though nothing downstream is coloured.
38
+ green: 'settled',
39
+ yellow: 'moving',
40
+ red: 'stopped',
41
+ // Resources and deploys — reached a steady state.
42
+ ready: 'settled',
43
+ active: 'settled',
44
+ running: 'settled',
45
+ available: 'settled',
46
+ ok: 'settled',
47
+ live: 'settled',
48
+ succeeded: 'settled',
49
+ connected: 'settled',
50
+ synced: 'settled',
51
+ imported: 'settled',
52
+ // Resources and deploys — in flight.
53
+ creating: 'moving',
54
+ provisioning: 'moving',
55
+ pending: 'moving',
56
+ updating: 'moving',
57
+ attaching: 'moving',
58
+ building: 'moving',
59
+ deploying: 'moving',
60
+ queued: 'moving',
61
+ importing: 'moving',
62
+ // Resources and deploys — stopped.
63
+ error: 'stopped',
64
+ failed: 'stopped',
65
+ degraded: 'stopped',
66
+ down: 'stopped',
67
+ canceled: 'stopped',
68
+ conflict: 'stopped',
69
+ // Money. An invoice, a charge or a subscription reports its own lifecycle and
70
+ // every billing surface in the fleet re-derived it: `paid` is done, `open` is
71
+ // waiting on the customer, `past_due` is waiting on someone to act, and a
72
+ // `draft` or a `void` invoice is a record of something that never happened.
73
+ paid: 'settled',
74
+ settled: 'settled',
75
+ complete: 'settled',
76
+ completed: 'settled',
77
+ fulfilled: 'settled',
78
+ trialing: 'settled',
79
+ open: 'moving',
80
+ processing: 'moving',
81
+ scheduled: 'moving',
82
+ incomplete: 'moving',
83
+ authorized: 'moving',
84
+ past_due: 'stopped',
85
+ overdue: 'stopped',
86
+ unpaid: 'stopped',
87
+ uncollectible: 'stopped',
88
+ disputed: 'stopped',
89
+ chargeback: 'stopped',
90
+ declined: 'stopped',
91
+ expired: 'stopped',
92
+ draft: 'quiet',
93
+ void: 'quiet',
94
+ voided: 'quiet',
95
+ refunded: 'quiet',
96
+ paused: 'quiet',
97
+ archived: 'quiet',
98
+ };
99
+ /** The tone a status reports in. Anything unrecognised is `quiet` — a status
100
+ * this table has never seen is not an alarm, it is an unknown. */
101
+ export const tone = (status) => OF[key(status)] ?? 'quiet';
102
+ //# sourceMappingURL=tone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tone.js","sourceRoot":"","sources":["../../src/product/tone.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH;iDACiD;AACjD,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE;IACzE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE;IACxE,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE;IACrE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE;CAC/D,CAAA;AAEV;uEACuE;AACvE,MAAM,GAAG,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAA;AAE/F,MAAM,EAAE,GAAyB;IAC/B,6EAA6E;IAC7E,6EAA6E;IAC7E,8CAA8C;IAC9C,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,SAAS;IAEd,kDAAkD;IAClD,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,SAAS;IAEnB,qCAAqC;IACrC,QAAQ,EAAE,QAAQ;IAClB,YAAY,EAAE,QAAQ;IACtB,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,QAAQ;IACnB,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,QAAQ;IACnB,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,QAAQ;IAEnB,mCAAmC;IACnC,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IAEnB,8EAA8E;IAC9E,8EAA8E;IAC9E,0EAA0E;IAC1E,4EAA4E;IAC5E,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,SAAS;IACnB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,SAAS;IAEnB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,QAAQ;IACnB,UAAU,EAAE,QAAQ;IACpB,UAAU,EAAE,QAAQ;IAEpB,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,aAAa,EAAE,SAAS;IACxB,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,SAAS;IAElB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,OAAO;CAClB,CAAA;AAED;mEACmE;AACnE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAc,EAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,OAAO,CAAA"}
@@ -4,11 +4,25 @@
4
4
  transitions the Gui-driven inline width/transform/opacity. Every animation is
5
5
  guarded by `prefers-reduced-motion: reduce`.
6
6
 
7
- Import once at the app root: import '@hanzo/ui/styles/motion.css' */
7
+ Import once at the app root: import '@hanzo/ui/styles/motion.css'
8
+
9
+ ── EVERY CLASS HERE IS `hz-` PREFIXED, and it was not always ────────────────
10
+ This sheet used to claim `.row`, `.skeleton`, `.fade`, `.mono`, `.drag` and
11
+ `.tnum` — six of the most ordinary words in anyone's CSS — at the document
12
+ level, in a package an app imports once at its root. An app with its own
13
+ `.row` did not get a warning; it got whichever rule the cascade preferred, in
14
+ a stylesheet it never opened. A library's utility classes are its namespace,
15
+ so they carry its name.
16
+
17
+ The unprefixed selectors are kept as aliases on the SAME rule for one minor
18
+ version so nothing breaks mid-flight, and are REMOVED IN 8.1.0. Nothing in
19
+ this package emits them any more — they exist only for a consumer who typed
20
+ `className="skeleton"` against the old sheet. Keyframe names are prefixed too
21
+ and have no alias: nothing outside this file ever referenced them. */
8
22
 
9
23
  /* Fade-up entrance — <FadeIn> applies the class + a per-item stagger delay.
10
24
  ~0.4s ease-out, small upward travel (matches the hanzo.ai marketing feel). */
11
- @keyframes fade-up {
25
+ @keyframes hz-fade-up {
12
26
  from {
13
27
  opacity: 0;
14
28
  transform: translateY(10px);
@@ -19,12 +33,14 @@
19
33
  }
20
34
  }
21
35
 
36
+ .hz-fade-up,
22
37
  .fade-up {
23
- animation: fade-up 0.4s cubic-bezier(0.16, 1, 0.3, 1) both;
38
+ animation: hz-fade-up 0.4s cubic-bezier(0.16, 1, 0.3, 1) both;
24
39
  will-change: transform, opacity;
25
40
  }
26
41
 
27
42
  @media (prefers-reduced-motion: reduce) {
43
+ .hz-fade-up,
28
44
  .fade-up {
29
45
  animation: none;
30
46
  }
@@ -32,27 +48,32 @@
32
48
 
33
49
  /* Shell chrome motion — sidebar collapse (width) and the Linear-style two-level
34
50
  nav slide (transform); backdrop cross-fade behind a SlideOver / dialog. */
51
+ .hz-collapse,
35
52
  .collapse {
36
53
  transition: width 220ms cubic-bezier(0.16, 1, 0.3, 1);
37
54
  will-change: width;
38
55
  }
39
56
 
57
+ .hz-slide,
40
58
  .slide {
41
59
  transition: transform 260ms cubic-bezier(0.16, 1, 0.3, 1);
42
60
  will-change: transform;
43
61
  }
44
62
 
63
+ .hz-fade,
45
64
  .fade {
46
65
  transition: opacity 240ms cubic-bezier(0.16, 1, 0.3, 1);
47
66
  will-change: opacity;
48
67
  }
49
68
 
50
69
  /* Drag-to-reorder — a pinned row while it is being dragged (pointer DnD). The
51
- lifted row gets a subtle lift; siblings ease into place via `.slide`. */
70
+ lifted row gets a subtle lift; siblings ease into place via `.hz-slide`. */
71
+ .hz-drag,
52
72
  .drag {
53
73
  touch-action: none;
54
74
  transition: transform 180ms cubic-bezier(0.16, 1, 0.3, 1);
55
75
  }
76
+ .hz-drag[data-dragging='true'],
56
77
  .drag[data-dragging='true'] {
57
78
  transition: none;
58
79
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.28);
@@ -61,9 +82,13 @@
61
82
  }
62
83
 
63
84
  @media (prefers-reduced-motion: reduce) {
85
+ .hz-collapse,
64
86
  .collapse,
87
+ .hz-slide,
65
88
  .slide,
89
+ .hz-fade,
66
90
  .fade,
91
+ .hz-drag,
67
92
  .drag {
68
93
  transition: none;
69
94
  }
@@ -75,7 +100,7 @@
75
100
  a brief highlight when a freshly-arrived row lands. */
76
101
 
77
102
  /* Skeleton shimmer — an honest "loading", never fabricated content. */
78
- @keyframes shimmer {
103
+ @keyframes hz-shimmer {
79
104
  0% {
80
105
  background-position: -160px 0;
81
106
  }
@@ -84,6 +109,7 @@
84
109
  }
85
110
  }
86
111
 
112
+ .hz-skeleton,
87
113
  .skeleton {
88
114
  background-color: var(--color3, rgba(148, 163, 184, 0.14));
89
115
  background-image: linear-gradient(
@@ -94,11 +120,11 @@
94
120
  );
95
121
  background-size: 160px 100%;
96
122
  background-repeat: no-repeat;
97
- animation: shimmer 1.2s ease-in-out infinite;
123
+ animation: hz-shimmer 1.2s ease-in-out infinite;
98
124
  }
99
125
 
100
126
  /* Live-feed pulse — the "Live" dot on a streaming panel. */
101
- @keyframes pulse {
127
+ @keyframes hz-pulse {
102
128
  0%,
103
129
  100% {
104
130
  opacity: 1;
@@ -111,7 +137,7 @@
111
137
  }
112
138
 
113
139
  /* Entrance for a freshly-arrived activity row (staggerless — one row at a time). */
114
- @keyframes row-in {
140
+ @keyframes hz-row-in {
115
141
  from {
116
142
  opacity: 0;
117
143
  transform: translateY(-6px);
@@ -122,27 +148,31 @@
122
148
  }
123
149
  }
124
150
 
151
+ .hz-row-in,
125
152
  .row-in {
126
- animation: row-in 0.35s cubic-bezier(0.16, 1, 0.3, 1) both;
153
+ animation: hz-row-in 0.35s cubic-bezier(0.16, 1, 0.3, 1) both;
127
154
  }
128
155
 
129
156
  @media (prefers-reduced-motion: reduce) {
157
+ .hz-skeleton,
130
158
  .skeleton {
131
159
  animation: none;
132
160
  }
161
+ .hz-row-in,
133
162
  .row-in {
134
163
  animation: none;
135
164
  }
136
165
  }
137
166
 
138
167
  /* ── Typography + surface classes the product layer's components reference ──────
139
- DataTable/Metric typeset numeric cells with `mono`/`tnum`; ComboBox and
140
- SelectMenu paint their popovers with `paper menu-in`; DataTable rows use
141
- `row`. They travel WITH the components (this is the package's one stylesheet)
142
- so any host that imports `@hanzo/ui/styles/motion.css` renders them correctly.
143
- The elevation/ring variables fall back to sane values, so a host that defines its
144
- own `--hz-*` theme tokens (the console does) still wins. */
168
+ DataTable/Metric typeset numeric cells with `hz-mono`/`hz-tnum`; ComboBox and
169
+ SelectMenu paint their popovers with `hz-paper hz-menu-in`; DataTable rows use
170
+ `hz-row`. They travel WITH the components (this is the package's one
171
+ stylesheet) so any host that imports `@hanzo/ui/styles/motion.css` renders them
172
+ correctly. The elevation/ring variables fall back to sane values, so a host
173
+ that defines its own `--hz-*` theme tokens (the console does) still wins. */
145
174
 
175
+ .hz-tnum,
146
176
  .tnum {
147
177
  font-variant-numeric: tabular-nums;
148
178
  font-feature-settings: 'tnum' 1;
@@ -150,6 +180,7 @@
150
180
 
151
181
  /* Data/numeric face — Geist Mono + tabular figures for metric values, prices, IDs
152
182
  and counts, so numbers read as precise, column-aligned data. */
183
+ .hz-mono,
153
184
  .mono {
154
185
  font-family: 'Geist Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
155
186
  font-variant-numeric: tabular-nums;
@@ -170,13 +201,14 @@
170
201
  order — so paper lost its drop on dark exactly the way the rungs did. The
171
202
  fallback stays because this sheet ships on its own: a host that imports
172
203
  motion.css without glass.css has no ladder to read. */
204
+ .hz-paper,
173
205
  .paper {
174
206
  box-shadow: var(--shadow-inset-hairline, inset 0 0 0 1px rgb(255 255 255 / .10)),
175
207
  var(--edge-highlight, inset 0 1px 0 0 rgb(255 255 255 / .10)),
176
208
  var(--glass-shadow-2, 0 10px 15px -3px rgb(0 0 0 / .55), 0 4px 6px -4px rgb(0 0 0 / .55));
177
209
  }
178
210
 
179
- @keyframes menu-in {
211
+ @keyframes hz-menu-in {
180
212
  from {
181
213
  opacity: 0;
182
214
  }
@@ -185,16 +217,19 @@
185
217
  }
186
218
  }
187
219
 
220
+ .hz-menu-in,
188
221
  .menu-in {
189
- animation: menu-in 140ms ease-out both;
222
+ animation: hz-menu-in 140ms ease-out both;
190
223
  will-change: opacity;
191
224
  }
192
225
 
226
+ .hz-row,
193
227
  .row {
194
228
  transition: background-color 140ms ease-out;
195
229
  }
196
230
 
197
231
  @media (prefers-reduced-motion: reduce) {
232
+ .hz-menu-in,
198
233
  .menu-in {
199
234
  animation: none;
200
235
  }