@mtdt/observeops-ds-spec 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/AGENTS.md +102 -0
  2. package/README.md +73 -0
  3. package/components/index.json +1270 -0
  4. package/components/recipes/README.md +41 -0
  5. package/components/recipes/recipes.json +922 -0
  6. package/components/registry/README.md +44 -0
  7. package/components/registry/_schema.json +47 -0
  8. package/components/registry/button.json +368 -0
  9. package/components/registry/checkbox.json +177 -0
  10. package/components/registry/data-viz-tooltips.json +409 -0
  11. package/components/registry/date-time-pickers.json +296 -0
  12. package/components/registry/drawer.json +222 -0
  13. package/components/registry/dropdown-picker.json +388 -0
  14. package/components/registry/filters.json +155 -0
  15. package/components/registry/form-item.json +281 -0
  16. package/components/registry/input.json +277 -0
  17. package/components/registry/link.json +186 -0
  18. package/components/registry/loose-tags.json +196 -0
  19. package/components/registry/menu.json +145 -0
  20. package/components/registry/modal.json +265 -0
  21. package/components/registry/navigation.json +425 -0
  22. package/components/registry/popover.json +216 -0
  23. package/components/registry/radio.json +238 -0
  24. package/components/registry/scheduler.json +188 -0
  25. package/components/registry/select.json +247 -0
  26. package/components/registry/severity.json +179 -0
  27. package/components/registry/switch.json +177 -0
  28. package/components/registry/table.json +275 -0
  29. package/components/registry/tabs.json +264 -0
  30. package/components/registry/tag.json +345 -0
  31. package/components/registry/tags-list.json +115 -0
  32. package/components/registry/toolbars.json +240 -0
  33. package/components/registry/tooltip.json +175 -0
  34. package/components/specs/README.md +72 -0
  35. package/components/specs/button.md +230 -0
  36. package/components/specs/checkbox.md +162 -0
  37. package/components/specs/data-viz-tooltips.md +93 -0
  38. package/components/specs/date-time-pickers.md +161 -0
  39. package/components/specs/drawer.md +162 -0
  40. package/components/specs/dropdown-picker.md +161 -0
  41. package/components/specs/filters.md +118 -0
  42. package/components/specs/form-item.md +130 -0
  43. package/components/specs/input.md +130 -0
  44. package/components/specs/link.md +131 -0
  45. package/components/specs/loose-tags.md +139 -0
  46. package/components/specs/menu.md +88 -0
  47. package/components/specs/modal.md +176 -0
  48. package/components/specs/navigation.md +181 -0
  49. package/components/specs/popover.md +118 -0
  50. package/components/specs/radio.md +144 -0
  51. package/components/specs/scheduler.md +133 -0
  52. package/components/specs/select.md +118 -0
  53. package/components/specs/switch.md +124 -0
  54. package/components/specs/table.md +115 -0
  55. package/components/specs/tabs.md +136 -0
  56. package/components/specs/tag.md +196 -0
  57. package/components/specs/tags-list.md +105 -0
  58. package/components/specs/toolbars.md +108 -0
  59. package/components/specs/tooltip.md +112 -0
  60. package/foundation/README.md +39 -0
  61. package/foundation/layout-shells.md +67 -0
  62. package/foundation/page-templates.md +69 -0
  63. package/foundation/panel-behaviours.md +61 -0
  64. package/foundation/screen-regions.md +62 -0
  65. package/index.js +75 -0
  66. package/layout/grid.json +34 -0
  67. package/layout/layouts.json +310 -0
  68. package/llms.txt +60 -0
  69. package/package.json +42 -0
  70. package/spec.manifest.json +407 -0
  71. package/tokens/README.md +125 -0
  72. package/tokens/component.json +34 -0
  73. package/tokens/kit-accents.json +14 -0
  74. package/tokens/primitive.json +130 -0
  75. package/tokens/purpose-map.json +67 -0
  76. package/tokens/semantic.dark.json +90 -0
  77. package/tokens/semantic.light.json +90 -0
  78. package/tokens/structural.json +35 -0
  79. package/tokens/variables.json +2018 -0
@@ -0,0 +1,14 @@
1
+ {
2
+ "$description": "Kit accents — Ant Design Vue 1.x LESS @vars that are NOT in variable.less (compile-time, theme-independent). They paint a few Ant component INTERNALS that tokens/variables.json cannot resolve. AI: if a registry says a control's dot/check is the 'Ant @primary-color' / cyan, resolve it here.",
3
+ "@primary-color": {
4
+ "value": "#099dd9",
5
+ "themed": false,
6
+ "note": "cyan — Ant interactive accent. Same in light + dark.",
7
+ "usedBy": [
8
+ "radio list dot",
9
+ "checkbox check",
10
+ "select/spinner",
11
+ "some Ant focus borders"
12
+ ]
13
+ }
14
+ }
@@ -0,0 +1,130 @@
1
+ {
2
+ "$description": "TIER 1 — PRIMITIVES. Raw values only, never themed, never used directly by components. SLICE for sign-off; values extracted verbatim from src/design/variable.less.",
3
+ "$status": "FUTURE / portable DTCG token layer (mds-*). NOT yet wired to the running product or component tokensUsed — the LIVE product uses tokens/variables.json (--vars). Do not emit mds-* for live output.",
4
+ "color": {
5
+ "white": {
6
+ "$type": "color",
7
+ "$value": "#ffffff"
8
+ },
9
+ "navy": {
10
+ "950": {
11
+ "$type": "color",
12
+ "$value": "#07101f"
13
+ },
14
+ "900": {
15
+ "$type": "color",
16
+ "$value": "#111c2c"
17
+ },
18
+ "800": {
19
+ "$type": "color",
20
+ "$value": "#1d2a3e"
21
+ }
22
+ },
23
+ "neutral": {
24
+ "50": {
25
+ "$type": "color",
26
+ "$value": "#ecf1f9"
27
+ },
28
+ "100": {
29
+ "$type": "color",
30
+ "$value": "#e3e8f2"
31
+ },
32
+ "400": {
33
+ "$type": "color",
34
+ "$value": "#7186a8"
35
+ },
36
+ "700": {
37
+ "$type": "color",
38
+ "$value": "#2b394f"
39
+ },
40
+ "800": {
41
+ "$type": "color",
42
+ "$value": "#172336"
43
+ },
44
+ "900": {
45
+ "$type": "color",
46
+ "$value": "#000000"
47
+ }
48
+ },
49
+ "cyan": {
50
+ "500": {
51
+ "$type": "color",
52
+ "$value": "#099dd9"
53
+ }
54
+ },
55
+ "teal": {
56
+ "500": {
57
+ "$type": "color",
58
+ "$value": "#0d9488"
59
+ }
60
+ },
61
+ "severity": {
62
+ "critical": {
63
+ "50": {
64
+ "$type": "color",
65
+ "$value": "#fef5f5"
66
+ },
67
+ "500": {
68
+ "$type": "color",
69
+ "$value": "#ec5b5b"
70
+ },
71
+ "950": {
72
+ "$type": "color",
73
+ "$value": "#310c0c"
74
+ }
75
+ },
76
+ "clear": {
77
+ "50": {
78
+ "$type": "color",
79
+ "$value": "#d1fae0"
80
+ },
81
+ "500": {
82
+ "$type": "color",
83
+ "$value": "#14b053"
84
+ },
85
+ "950": {
86
+ "$type": "color",
87
+ "$value": "#0d3a1f"
88
+ }
89
+ }
90
+ }
91
+ },
92
+ "space": {
93
+ "100": {
94
+ "$type": "dimension",
95
+ "$value": "8px"
96
+ },
97
+ "200": {
98
+ "$type": "dimension",
99
+ "$value": "12px"
100
+ },
101
+ "300": {
102
+ "$type": "dimension",
103
+ "$value": "16px"
104
+ },
105
+ "400": {
106
+ "$type": "dimension",
107
+ "$value": "24px"
108
+ }
109
+ },
110
+ "font": {
111
+ "size": {
112
+ "100": {
113
+ "$type": "dimension",
114
+ "$value": "0.6rem"
115
+ },
116
+ "200": {
117
+ "$type": "dimension",
118
+ "$value": "0.8rem"
119
+ },
120
+ "300": {
121
+ "$type": "dimension",
122
+ "$value": "1rem"
123
+ },
124
+ "500": {
125
+ "$type": "dimension",
126
+ "$value": "1.5rem"
127
+ }
128
+ }
129
+ }
130
+ }
@@ -0,0 +1,67 @@
1
+ {
2
+ "$description": "Purpose → token map. When styling a NEW element that ISN'T a catalogued component, pick the token by PURPOSE here (instead of guessing or hardcoding). All entries are real product tokens: runtime CSS --vars (resolve via variables.json), LESS @vars (structural.json), or the kit @primary-color (kit-accents.json). Colour values shown as light / dark.",
3
+ "$rules": [
4
+ "Never hardcode hex/rgba — use the token for the purpose.",
5
+ "Brand / primary action = --primary (navy #111c2c light / #e3e8f2 dark), NOT cyan.",
6
+ "The cyan @primary-color (#099dd9) is ONLY the Ant form-control accent (radio dot, checkbox check, select) — not a general brand colour.",
7
+ "Every colour token is theme-aware (light/dark) — never branch on theme yourself.",
8
+ "For monitor/alert SEVERITY use the Severity component + --severity-* tokens; for generic status use --secondary-*."
9
+ ],
10
+ "color": {
11
+ "surface": {
12
+ "page / app background": { "token": "--page-background-color", "light": "#fff", "dark": "#07101f" },
13
+ "card / widget surface": { "token": "--common-widget-bg", "light": "#fff", "dark": "#172336" },
14
+ "content area background": { "token": "--common-main-bg", "light": "#ecf1f9", "dark": "#172336" },
15
+ "subtle fill / skeleton / code chip": { "token": "--code-tag-background-color", "light": "#ecf1f9", "dark": "#172336" },
16
+ "row / subtle hover": { "token": "--neutral-lighter", "light": "#e3e8f2", "dark": "#1d2a3e" },
17
+ "nav item hover": { "token": "--nav-hover-bg", "light": "#ecf1f9", "dark": "#1d2a3e" },
18
+ "grid / table header": { "token": "--grid-header-bg", "light": "#ecf1f9", "dark": "rgba(72,89,117,0.4)" },
19
+ "left nav rail": { "token": "--nav-panel-bg", "light": "#f6f9fc", "dark": "#172336" },
20
+ "dashboard canvas": { "token": "--dashboard-background", "light": "#f9fafb", "dark": "#0b1627" },
21
+ "modal surface": { "token": "--modal-background-color", "light": "#fff", "dark": "#07101f" },
22
+ "drawer surface": { "token": "--drawer-background-color", "light": "#fff", "dark": "#07101f" },
23
+ "overlay / backdrop scrim": { "token": "--overlay-bg", "light": "rgba(0,0,0,0.25)", "dark": "rgba(255,255,255,0.25)" }
24
+ },
25
+ "text": {
26
+ "primary / body": { "token": "--page-text-color", "light": "#1d2a3e", "dark": "#cad3e2" },
27
+ "secondary": { "token": "--neutral-regular", "light": "#7186a8", "dark": "#6a7fa0" },
28
+ "muted / hint / placeholder / caption": { "token": "--neutral-light", "light": "#6a7fa0", "dark": "#8e9fbc" },
29
+ "form-field label (secondary)": { "token": "--text-color-common-secondary", "light": "#7186a8", "dark": "#8e9fbc" },
30
+ "on-brand / inverse (text on --primary or a coloured fill)": { "token": "--active-text-color", "light": "#fff", "dark": "#fff" },
31
+ "white (badges, knobs)": { "token": "--white-regular", "light": "#fff", "dark": "rgba(255,255,255,0.8)" }
32
+ },
33
+ "border": {
34
+ "default border / divider": { "token": "--border-color", "light": "#e3e8f2", "dark": "#1d2a3e" },
35
+ "form field border": { "token": "--field-border-color", "light": "#e3e8f2", "dark": "#2b394f" }
36
+ },
37
+ "brand / interactive": {
38
+ "primary action (button bg, active pill, key accents)": { "token": "--primary", "light": "#111c2c", "dark": "#e3e8f2" },
39
+ "primary alt (secondary brand / gradient stop)": { "token": "--primary-alt", "light": "#1d2a3e", "dark": "#cad3e2" },
40
+ "form-control accent (radio dot, checkbox check, select highlight)": { "token": "@primary-color", "value": "#099dd9", "note": "kit LESS @var (kit-accents.json); same both themes" }
41
+ },
42
+ "status / semantic": {
43
+ "error / danger": { "token": "--secondary-red", "light": "#ec5b5b", "dark": "#ec5b5b" },
44
+ "success": { "token": "--secondary-green", "light": "#14b053", "dark": "#36d576" },
45
+ "warning": { "token": "--secondary-yellow", "light": "#e8b407", "dark": "#fad100" },
46
+ "info / in-progress": { "token": "--secondary-orange", "light": "#f47c22", "dark": "#fa9950" }
47
+ },
48
+ "severity (monitor / alert LEVELS)": {
49
+ "$pattern": "--severity-<level> = the dot/text colour; --severity-<level>-dot-box = the light centre/halo; --severity-<level>-lighter = a bg tint.",
50
+ "levels": ["up", "clear", "critical", "down", "major", "warning", "maintenance", "unreachable", "suspended", "disable", "stop", "none", "unknown"],
51
+ "$use": "Prefer the Severity component (atoms/severity); fall back to --secondary-* for generic status strings."
52
+ },
53
+ "neutrals ramp (light → dark)": ["--neutral-lightest", "--neutral-lighter", "--neutral-light", "--neutral-regular", "--neutral-dark", "--neutral-darker", "--neutral-darkest"],
54
+ "elevation / shadow": {
55
+ "card / panel / popover / drawer / toast shadow": { "token": "--neutral-shadow-light", "value": "rgba(70,70,70,0.15)", "note": "shadow COLOUR — keep your own offset/blur, e.g. box-shadow: 0 6px 18px var(--neutral-shadow-light)" },
56
+ "tooltip shadow (complete value)": { "token": "--tooltip-box-shadow", "value": "0 2px 8px rgba(0,0,0,0.15)" }
57
+ }
58
+ },
59
+ "structural": {
60
+ "$note": "LESS @vars (structural.json) — compile-time, not themed.",
61
+ "spacing": { "@padding-lg": "24px", "@padding-md": "16px (default form gutter)", "@padding-sm": "12px", "@padding-xs": "8px" },
62
+ "sizing": { "@input-height-base": "32px", "@btn-height": "2.1rem", "@header-height": "55px", "@nav-icon-width": "50px", "@navbar-height": "50px", "@search-height": "36px" },
63
+ "radius": { "$note": "The DS has NO @border-radius-base — use @btn-radius for ALL general radius (cards, modals, inputs, chips), not just buttons.", "@btn-radius": "4px (the general-purpose default radius, app-wide)", "@btn-raidus-full": "150px (pill; note the source typo 'raidus' is the real token name)" },
64
+ "type": { "@font-family": "'Poppins', sans-serif", "@text-lg": "1.5rem", "@text-regular": "1rem", "@text-sm": "0.8rem (base body)", "@text-xs": "0.6rem" }
65
+ },
66
+ "grid": { "$note": "Layout uses the 12-col MRow/MCol — see layout/grid.json. 6 = half, 12 = full, gutter 16 (@padding-md)." }
67
+ }
@@ -0,0 +1,90 @@
1
+ {
2
+ "$description": "TIER 2 — SEMANTIC (DARK mode). SAME keys as semantic.light.json, different primitive references. This is what 'modes' means: one token name, value swaps per theme. SLICE for sign-off.",
3
+ "$status": "FUTURE / portable DTCG token layer (mds-*). NOT yet wired to the running product or component tokensUsed — the LIVE product uses tokens/variables.json (--vars). Do not emit mds-* for live output.",
4
+ "color": {
5
+ "background": {
6
+ "default": {
7
+ "$type": "color",
8
+ "$value": "{color.navy.950}"
9
+ },
10
+ "brand": {
11
+ "bold": {
12
+ "$type": "color",
13
+ "$value": "{color.white}"
14
+ }
15
+ },
16
+ "severity": {
17
+ "critical": {
18
+ "subtle": {
19
+ "$type": "color",
20
+ "$value": "{color.severity.critical.950}"
21
+ }
22
+ },
23
+ "clear": {
24
+ "subtle": {
25
+ "$type": "color",
26
+ "$value": "{color.severity.clear.950}"
27
+ }
28
+ }
29
+ }
30
+ },
31
+ "surface": {
32
+ "raised": {
33
+ "$type": "color",
34
+ "$value": "{color.neutral.800}"
35
+ }
36
+ },
37
+ "text": {
38
+ "default": {
39
+ "$type": "color",
40
+ "$value": "{color.neutral.100}"
41
+ },
42
+ "brand": {
43
+ "$type": "color",
44
+ "$value": "{color.neutral.100}"
45
+ },
46
+ "subtle": {
47
+ "$type": "color",
48
+ "$value": "{color.neutral.400}"
49
+ },
50
+ "inverse": {
51
+ "$type": "color",
52
+ "$value": "{color.navy.950}"
53
+ },
54
+ "severity": {
55
+ "critical": {
56
+ "$type": "color",
57
+ "$value": "{color.severity.critical.500}"
58
+ },
59
+ "clear": {
60
+ "$type": "color",
61
+ "$value": "{color.severity.clear.500}"
62
+ }
63
+ },
64
+ "accent": {
65
+ "teal": {
66
+ "$type": "color",
67
+ "$value": "{color.teal.500}"
68
+ }
69
+ }
70
+ },
71
+ "border": {
72
+ "default": {
73
+ "$type": "color",
74
+ "$value": "{color.navy.800}"
75
+ },
76
+ "subtle": {
77
+ "$type": "color",
78
+ "$value": "{color.neutral.700}"
79
+ },
80
+ "focused": {
81
+ "$type": "color",
82
+ "$value": "{color.cyan.500}"
83
+ }
84
+ },
85
+ "link": {
86
+ "$type": "color",
87
+ "$value": "{color.cyan.500}"
88
+ }
89
+ }
90
+ }
@@ -0,0 +1,90 @@
1
+ {
2
+ "$description": "TIER 2 — SEMANTIC (LIGHT mode). Roles that reference primitives. This is the SHARED CONTRACT with Figma. Property-first naming. SLICE for sign-off.",
3
+ "$status": "FUTURE / portable DTCG token layer (mds-*). NOT yet wired to the running product or component tokensUsed — the LIVE product uses tokens/variables.json (--vars). Do not emit mds-* for live output.",
4
+ "color": {
5
+ "background": {
6
+ "default": {
7
+ "$type": "color",
8
+ "$value": "{color.white}"
9
+ },
10
+ "brand": {
11
+ "bold": {
12
+ "$type": "color",
13
+ "$value": "{color.navy.950}"
14
+ }
15
+ },
16
+ "severity": {
17
+ "critical": {
18
+ "subtle": {
19
+ "$type": "color",
20
+ "$value": "{color.severity.critical.50}"
21
+ }
22
+ },
23
+ "clear": {
24
+ "subtle": {
25
+ "$type": "color",
26
+ "$value": "{color.severity.clear.50}"
27
+ }
28
+ }
29
+ }
30
+ },
31
+ "surface": {
32
+ "raised": {
33
+ "$type": "color",
34
+ "$value": "{color.white}"
35
+ }
36
+ },
37
+ "text": {
38
+ "default": {
39
+ "$type": "color",
40
+ "$value": "{color.navy.800}"
41
+ },
42
+ "brand": {
43
+ "$type": "color",
44
+ "$value": "{color.navy.900}"
45
+ },
46
+ "subtle": {
47
+ "$type": "color",
48
+ "$value": "{color.neutral.400}"
49
+ },
50
+ "inverse": {
51
+ "$type": "color",
52
+ "$value": "{color.white}"
53
+ },
54
+ "severity": {
55
+ "critical": {
56
+ "$type": "color",
57
+ "$value": "{color.severity.critical.500}"
58
+ },
59
+ "clear": {
60
+ "$type": "color",
61
+ "$value": "{color.severity.clear.500}"
62
+ }
63
+ },
64
+ "accent": {
65
+ "teal": {
66
+ "$type": "color",
67
+ "$value": "{color.teal.500}"
68
+ }
69
+ }
70
+ },
71
+ "border": {
72
+ "default": {
73
+ "$type": "color",
74
+ "$value": "{color.neutral.100}"
75
+ },
76
+ "subtle": {
77
+ "$type": "color",
78
+ "$value": "{color.neutral.100}"
79
+ },
80
+ "focused": {
81
+ "$type": "color",
82
+ "$value": "{color.cyan.500}"
83
+ }
84
+ },
85
+ "link": {
86
+ "$type": "color",
87
+ "$value": "{color.cyan.500}"
88
+ }
89
+ }
90
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "$description": "TIER 0 — STRUCTURAL LESS @vars (spacing, sizing, radii, typography) from src/design/index.less. Not themed. AI: these are the @-prefixed LESS vars (compile-time), distinct from the runtime CSS --vars in variables.json.",
3
+ "spacing": {
4
+ "@padding-lg": "24px",
5
+ "@padding-md": "16px",
6
+ "@padding-sm": "12px",
7
+ "@padding-xs": "8px"
8
+ },
9
+ "sizing": {
10
+ "@navbar-height": "50px",
11
+ "@nav-icon-width": "50px",
12
+ "@nav-icon-height": "40px",
13
+ "@input-height-base": "32px",
14
+ "@header-height": "55px",
15
+ "@header-drop-width": "320px",
16
+ "@search-height": "36px",
17
+ "@search-width": "18rem",
18
+ "@btn-height": "2.1rem"
19
+ },
20
+ "radius": {
21
+ "@btn-radius": "4px",
22
+ "@btn-raidus-full": "150px"
23
+ },
24
+ "typography": {
25
+ "@font-family": "'Poppins', sans-serif",
26
+ "@text-lg": "1.5rem",
27
+ "@text-regular": "1rem",
28
+ "@text-sm": "0.8rem",
29
+ "@text-xs": "0.6rem",
30
+ "@font-size-base": "0.8rem",
31
+ "@font-size-lg": "1rem",
32
+ "@font-size-sm": "0.8rem",
33
+ "@font-size-10": "10px"
34
+ }
35
+ }