@xyd-js/themes 0.0.0 → 0.1.1-build.161

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 (40) hide show
  1. package/CHANGELOG.md +1930 -0
  2. package/LICENSE +21 -0
  3. package/dist/decorators/atlas-vars.css +29 -0
  4. package/dist/decorators/header-sketch.css +23 -0
  5. package/dist/decorators/page-layout.css +11 -0
  6. package/dist/decorators/page-leftpad.css +46 -0
  7. package/dist/decorators/page-sketch.css +52 -0
  8. package/dist/decorators/sidebar-pad.css +24 -0
  9. package/dist/decorators/sidebar-scroll.css +51 -0
  10. package/dist/index.css +1259 -0
  11. package/dist/index.d.ts +116 -0
  12. package/dist/index.js +669 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/reset.css +56 -0
  15. package/dist/rollup.d.ts +28 -0
  16. package/dist/rollup.js +139 -0
  17. package/dist/rollup.js.map +1 -0
  18. package/package.json +55 -6
  19. package/postcss.config.cjs +7 -0
  20. package/scripts/build-css.js +73 -0
  21. package/src/BaseTheme.tsx +471 -0
  22. package/src/Theme.tsx +363 -0
  23. package/src/context.tsx +9 -0
  24. package/src/copyPresetsPlugin.ts +124 -0
  25. package/src/index.ts +11 -0
  26. package/src/rollup.ts +91 -0
  27. package/src/styles/decorators/atlas-vars.css +32 -0
  28. package/src/styles/decorators/header-sketch.css +23 -0
  29. package/src/styles/decorators/page-layout.css +11 -0
  30. package/src/styles/decorators/page-leftpad.css +46 -0
  31. package/src/styles/decorators/page-sketch.css +30 -0
  32. package/src/styles/decorators/sidebar-pad.css +24 -0
  33. package/src/styles/decorators/sidebar-scroll.css +51 -0
  34. package/src/styles/index.css +26 -0
  35. package/src/styles/reset.css +56 -0
  36. package/src/styles/styles.css +156 -0
  37. package/src/styles/tokens.css +472 -0
  38. package/tsconfig.json +51 -0
  39. package/tsup.config.ts +38 -0
  40. package/types.d.ts +13 -0
@@ -0,0 +1,46 @@
1
+ @layer decorators {
2
+ xyd-layout-primary {
3
+ --theme-sidebar-left: unset;
4
+ --theme-sidebar-width: unset;
5
+
6
+ /* media: Large Desktop */
7
+ @media (min-width: 1440px) {
8
+ --theme-layout-max-width: 1600px;
9
+ --theme-sidebar-width-var: 350px;
10
+
11
+ --theme-sidebar-left-padding-space: 32px;
12
+ --theme-sidebar-left-vars: (var(--theme-layout-max-width) / 2) + var(--theme-sidebar-left-padding-space);
13
+ --theme-sidebar-left-calc: calc(50% - var(--theme-sidebar-left-vars));
14
+
15
+ --theme-sidebar-width-padding-space: 8px;
16
+
17
+ --theme-sidebar-left: max(32px, var(--theme-sidebar-left-calc));
18
+ --theme-sidebar-width: calc((100% - (var(--theme-layout-max-width))) / 2 + var(--theme-sidebar-width-var) + var(--theme-sidebar-width-padding-space));
19
+ }
20
+
21
+ /* layout: Sidebar */
22
+ [part="sidebar"] {
23
+ padding-left: var(--theme-sidebar-left);
24
+ width: var(--theme-sidebar-width);
25
+ }
26
+
27
+ /* component: Nav */
28
+ xyd-nav {
29
+ [part="nav"]>*:first-child {
30
+ position: relative;
31
+ left: calc(var(--theme-sidebar-left) + var(--xyd-sidebar-item-padding-total) - var(--xyd-nav-padding));
32
+ }
33
+ }
34
+
35
+ /* component: SubNav */
36
+ xyd-subnav {
37
+ padding-left: var(--theme-sidebar-left);
38
+ }
39
+
40
+ @media (max-width: 1024px) {
41
+ xyd-subnav {
42
+ padding-left: var(--xyd-nav-padding);
43
+ }
44
+ }
45
+ }
46
+ }
@@ -0,0 +1,30 @@
1
+ @import "./header-sketch.css";
2
+
3
+ :root {
4
+ --decorator-sketch-border-color: var(--dark32);
5
+ --color-header-border: var(--decorator-sketch-border-color);
6
+ --xyd-sidebar-divider-color: var(--decorator-sketch-border-color);
7
+ }
8
+
9
+ @layer decorators {
10
+ xyd-layout-primary {
11
+ &[data-hide-subheader="true"] {
12
+ xyd-subnav {
13
+ border-top: none;
14
+ }
15
+ }
16
+
17
+ &:not([data-layout="wide"]) {
18
+ [part="page-article"] {
19
+ border-right: 1px solid var(--decorator-sketch-border-color);
20
+ }
21
+ }
22
+
23
+ /* component: BaseTheme.ContentSecondary */
24
+ xyd-secondary-content {
25
+ [part="secondary-content-header"] {
26
+ border-bottom: 1px solid var(--decorator-sketch-border-color);
27
+ }
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,24 @@
1
+ @layer decorators {
2
+ xyd-layout-primary {
3
+ --sidebar-height: calc(100dvh - var(--xyd-nav-height) - var(--xyd-banner-height-dynamic) - var(--theme-nav-height-space, 0px));
4
+ --sidebar-top: calc(var(--xyd-nav-height) + var(--xyd-banner-height-dynamic) + var(--theme-nav-height-space, 0px));
5
+
6
+ --sidebar-subheader-height: calc(100dvh - var(--xyd-header-total-height) - var(--theme-nav-height-space, 0px));
7
+ --sidebar-subheader-top: calc(var(--xyd-header-total-height) + var(--theme-nav-height-space, 0px));
8
+
9
+ /* layout: Sidebar */
10
+ [part="sidebar"] {
11
+ position: sticky;
12
+ height: var(--sidebar-height);
13
+ top: var(--sidebar-top);
14
+ z-index: 1;
15
+ }
16
+
17
+ &[data-subheader="true"][data-hide-subheader="false"] {
18
+ [part="sidebar"] {
19
+ height: var(--sidebar-subheader-height);
20
+ top: var(--sidebar-subheader-top);
21
+ }
22
+ }
23
+ }
24
+ }
@@ -0,0 +1,51 @@
1
+ @layer decorators {
2
+ :root {
3
+ --decorator-sidebar-scroll-bgcolor: var(--xyd-toc-scroll-bgcolor);
4
+ }
5
+
6
+ xyd-layout-primary {
7
+ xyd-sidebar {
8
+ scrollbar-color: transparent transparent;
9
+ scrollbar-width: thin;
10
+ }
11
+
12
+ xyd-sidebar::-webkit-scrollbar-corner,
13
+ xyd-sidebar::-webkit-scrollbar-thumb,
14
+ xyd-sidebar::-webkit-scrollbar-track {
15
+ background: none;
16
+ }
17
+
18
+ xyd-sidebar::-webkit-scrollbar-thumb {
19
+ background: var(--decorator-sidebar-scroll-bgcolor);
20
+ background-clip: content-box;
21
+ border: 1px solid transparent;
22
+ border-radius: 10px;
23
+ }
24
+
25
+ /* Hover effect for scrollbar */
26
+ xyd-sidebar:hover {
27
+ scrollbar-color: var(--decorator-sidebar-scroll-bgcolor) transparent;
28
+ }
29
+
30
+ xyd-sidebar:hover::-webkit-scrollbar-thumb {
31
+ background: var(--decorator-sidebar-scroll-bgcolor);
32
+ background-clip: content-box;
33
+ border: 1px solid transparent;
34
+ border-radius: 10px;
35
+ }
36
+
37
+ /* Mobile responsive scrollbar */
38
+ @media screen and (max-width: 640px) {
39
+ xyd-sidebar {
40
+ scrollbar-color: var(--decorator-sidebar-scroll-bgcolor) transparent;
41
+ }
42
+
43
+ xyd-sidebar::-webkit-scrollbar-thumb {
44
+ background: var(--decorator-sidebar-scroll-bgcolor);
45
+ background-clip: content-box;
46
+ border: 1px solid transparent;
47
+ border-radius: 10px;
48
+ }
49
+ }
50
+ }
51
+ }
@@ -0,0 +1,26 @@
1
+ /* CSS Layer Hierarchy
2
+ * @layer reset - Base style resets to normalize browser defaults
3
+ * @layer defaults - Basic component styles for UI, writer, and coder components
4
+ * @layer defaultfix - Default fixed styles within defualts
5
+ * @layer components - Composite styles built on top of base components
6
+ * @layer fabric - Fabric styles after components // TODO: deprecate and move to decorator?
7
+ * @layer templates - Template-specific styles like Atlas
8
+ * @layer decorators - Decorate previous layers before theming
9
+ * @layer themes - Theme-level CSS modifications
10
+ * @layer themedecorator - After theme-level decorator styles
11
+ * @layer presets - Preset theming after themes layer
12
+ * @layer user - User-level styles after presets layer
13
+ * @layer overrides - Final override layer for styles not applicable in other layers
14
+ */
15
+ @layer reset, defaults, defaultfix, components, fabric, templates, decorators, themes, themedecorator, presets, user, overrides;
16
+
17
+ @import "@xyd-js/ui/dist/index.css";
18
+ @import "@xyd-js/components/dist/index.css";
19
+ @import "@xyd-js/atlas/dist/tokens.css";
20
+ @import "@xyd-js/atlas/dist/index.css";
21
+ @import "@xyd-js/atlas/dist/styles.css";
22
+
23
+ @import "./tokens.css";
24
+ @import "./reset.css";
25
+ @import "./styles.css";
26
+
@@ -0,0 +1,56 @@
1
+ /*TODO: in the future not needed cuz every component would have have default styles itself?*/
2
+
3
+ @layer reset {
4
+ body {
5
+ margin: 0;
6
+ }
7
+
8
+ ol, ul, menu {
9
+ list-style: none;
10
+ margin: 0;
11
+ padding: 0;
12
+ }
13
+
14
+ button, input:where([type=button]), input:where([type=reset]), input:where([type=submit]) {
15
+ -webkit-appearance: button;
16
+ background-color: transparent;
17
+ background-image: none;
18
+ }
19
+
20
+ button, [role=button] {
21
+ cursor: pointer;
22
+ }
23
+
24
+ button, select {
25
+ text-transform: none;
26
+ }
27
+
28
+ button, input, optgroup, select, textarea {
29
+ font-family: inherit;
30
+ font-feature-settings: inherit;
31
+ font-variation-settings: inherit;
32
+ font-size: 100%;
33
+ font-weight: inherit;
34
+ line-height: inherit;
35
+ letter-spacing: inherit;
36
+ color: inherit;
37
+ margin: 0;
38
+ padding: 0;
39
+ }
40
+
41
+ a {
42
+ color: inherit;
43
+ text-decoration: inherit;
44
+ }
45
+
46
+ *, :before, :after {
47
+ box-sizing: border-box;
48
+ border-width: 0;
49
+ border-style: solid;
50
+ }
51
+
52
+ p {
53
+ padding: 0;
54
+ margin: 0;
55
+ }
56
+ }
@@ -0,0 +1,156 @@
1
+ @import "./decorators/page-layout.css";
2
+
3
+ @layer defaults {
4
+ html {
5
+ font-family: var(--font-body-family);
6
+ font-weight: var(--font-body-weight);
7
+ font-optical-sizing: auto;
8
+ -webkit-font-smoothing: antialiased;
9
+ -moz-osx-font-smoothing: grayscale;
10
+ }
11
+
12
+ pre {
13
+ font-family: var(--font-coder-family, monospace);
14
+ font-weight: var(--font-coder-weight, 400);
15
+ }
16
+
17
+ body {
18
+ font-size: var(--xyd-font-size-small);
19
+ line-height: var(--xyd-line-height-small);
20
+ color: var(--text-primary);
21
+ background: var(--color-bg, var(--white));
22
+ }
23
+ }
24
+
25
+ @layer defaults {
26
+ /* Color Scheme Visibility Rules */
27
+
28
+ /* When html has data-color-scheme="light", hide dark elements */
29
+ html[data-color-scheme="light"] [data-color-scheme="dark"]:not(html):not(head):not(body) {
30
+ display: none;
31
+ }
32
+
33
+ /* When html has data-color-scheme="dark", hide light elements */
34
+ html[data-color-scheme="dark"] [data-color-scheme="light"]:not(html):not(head):not(body) {
35
+ display: none;
36
+ }
37
+
38
+ /* When html has data-color-scheme="os", use system preference */
39
+ @media (prefers-color-scheme: light) {
40
+ html[data-color-scheme="os"] [data-color-scheme="dark"]:not(html):not(head):not(body) {
41
+ display: none;
42
+ }
43
+ }
44
+
45
+ @media (prefers-color-scheme: dark) {
46
+ html[data-color-scheme="os"] [data-color-scheme="light"]:not(html):not(head):not(body) {
47
+ display: none;
48
+ }
49
+ }
50
+
51
+ /* Fallback: when no data-color-scheme on html, use system preference */
52
+ @media (prefers-color-scheme: light) {
53
+ html:not([data-color-scheme]) [data-color-scheme="dark"]:not(html):not(head):not(body) {
54
+ display: none;
55
+ }
56
+ }
57
+
58
+ @media (prefers-color-scheme: dark) {
59
+ html:not([data-color-scheme]) [data-color-scheme="light"]:not(html):not(head):not(body) {
60
+ display: none;
61
+ }
62
+ }
63
+
64
+ @media (max-width: 1024px) {
65
+ [data-desktop]:not([data-desktop="false"]) {
66
+ display: none;
67
+ }
68
+ }
69
+
70
+ @media (min-width: 1024px) {
71
+ [data-mobile]:not([data-mobile="false"]) {
72
+ display: none;
73
+ }
74
+ }
75
+
76
+
77
+ }
78
+
79
+ @layer defaults {
80
+ /* TODO: move to components */
81
+ /* github-button to apps? */
82
+ xyd-page-footer {
83
+ display: flex;
84
+ align-items: center;
85
+ justify-content: center;
86
+ flex-direction: column;
87
+
88
+ [part="github-button-container"] {
89
+ display: flex;
90
+ align-items: center;
91
+ justify-content: center;
92
+ flex-direction: column;
93
+ gap: 8px;
94
+ padding: 15px;
95
+ }
96
+ }
97
+
98
+ /* TODO: move to components */
99
+ xyd-built-with {
100
+ display: flex;
101
+ gap: 8px;
102
+ padding: 15px;
103
+ justify-content: center;
104
+
105
+ [part="text"] {
106
+ font-size: var(--xyd-font-size-xsmall);
107
+ color: var(--dark48);
108
+ letter-spacing: 0.5px;
109
+ }
110
+
111
+ [part="logo"] {
112
+ a {
113
+ margin: 0;
114
+ padding: 0;
115
+ }
116
+
117
+ svg {
118
+ width: 48px;
119
+ height: 100%;
120
+ }
121
+ }
122
+ }
123
+ }
124
+
125
+ @layer defaults {
126
+ xyd-secondary-content {
127
+ [part="secondary-content-header"] {
128
+ padding: 25px 75px;
129
+ border-bottom: 1px solid var(--dark32);
130
+ display: flex;
131
+ align-items: center;
132
+ justify-content: space-between;
133
+
134
+ @media (max-width: 1024px) {
135
+ padding-inline: var(--xyd-sidebar-item-padding-total)
136
+
137
+ }
138
+ }
139
+
140
+ [part="secondary-content"] {
141
+ padding: 25px 75px;
142
+
143
+ @media (max-width: 1024px) {
144
+ padding-inline: var(--xyd-sidebar-item-padding-total)
145
+ }
146
+ }
147
+ }
148
+
149
+ @media (max-width: 1024px) {
150
+ xyd-secondary-content {
151
+ [part="secondary-content-header"] {
152
+ display: block;
153
+ }
154
+ }
155
+ }
156
+ }