@owdproject/nuxt-theme-paper 0.0.0-stage → 4.0.0-alpha.3

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 (78) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +62 -2
  3. package/dist/module.d.mts +7 -0
  4. package/dist/module.json +9 -0
  5. package/dist/module.mjs +55 -0
  6. package/dist/runtime/assets/styles/index.css +533 -0
  7. package/dist/runtime/assets/styles/partials/checkbox.css +158 -0
  8. package/dist/runtime/assets/styles/partials/contextmenu.css +22 -0
  9. package/dist/runtime/assets/styles/partials/desktop.css +69 -0
  10. package/dist/runtime/assets/styles/partials/input.css +155 -0
  11. package/dist/runtime/assets/styles/partials/menu.css +72 -0
  12. package/dist/runtime/assets/styles/partials/scrollbar.css +25 -0
  13. package/dist/runtime/assets/styles/partials/tabs.css +163 -0
  14. package/dist/runtime/assets/styles/partials/window-chrome.css +45 -0
  15. package/dist/runtime/assets/styles/partials/window.css +30 -0
  16. package/dist/runtime/components/ButtonWindowNav.d.vue.ts +17 -0
  17. package/dist/runtime/components/ButtonWindowNav.vue +12 -0
  18. package/dist/runtime/components/ButtonWindowNav.vue.d.ts +17 -0
  19. package/dist/runtime/components/Desktop.d.vue.ts +13 -0
  20. package/dist/runtime/components/Desktop.vue +21 -0
  21. package/dist/runtime/components/Desktop.vue.d.ts +13 -0
  22. package/dist/runtime/components/DesktopContent.d.vue.ts +13 -0
  23. package/dist/runtime/components/DesktopContent.vue +9 -0
  24. package/dist/runtime/components/DesktopContent.vue.d.ts +13 -0
  25. package/dist/runtime/components/DesktopWindow.d.vue.ts +21 -0
  26. package/dist/runtime/components/DesktopWindow.vue +51 -0
  27. package/dist/runtime/components/DesktopWindow.vue.d.ts +21 -0
  28. package/dist/runtime/components/DesktopWindowContent.d.vue.ts +13 -0
  29. package/dist/runtime/components/DesktopWindowContent.vue +31 -0
  30. package/dist/runtime/components/DesktopWindowContent.vue.d.ts +13 -0
  31. package/dist/runtime/components/DesktopWindowIframe.d.vue.ts +20 -0
  32. package/dist/runtime/components/DesktopWindowIframe.vue +30 -0
  33. package/dist/runtime/components/DesktopWindowIframe.vue.d.ts +20 -0
  34. package/dist/runtime/components/DesktopWindowNav.d.vue.ts +15 -0
  35. package/dist/runtime/components/DesktopWindowNav.vue +113 -0
  36. package/dist/runtime/components/DesktopWindowNav.vue.d.ts +15 -0
  37. package/dist/runtime/components/DesktopWindowNavButton.d.vue.ts +17 -0
  38. package/dist/runtime/components/DesktopWindowNavButton.vue +54 -0
  39. package/dist/runtime/components/DesktopWindowNavButton.vue.d.ts +17 -0
  40. package/dist/runtime/components/PaperSystemBar.d.vue.ts +3 -0
  41. package/dist/runtime/components/PaperSystemBar.vue +808 -0
  42. package/dist/runtime/components/PaperSystemBar.vue.d.ts +3 -0
  43. package/dist/runtime/components/PaperWindowSnapHints.d.vue.ts +3 -0
  44. package/dist/runtime/components/PaperWindowSnapHints.vue +7 -0
  45. package/dist/runtime/components/PaperWindowSnapHints.vue.d.ts +3 -0
  46. package/dist/runtime/composables/usePaperAppearance.d.ts +8 -0
  47. package/dist/runtime/composables/usePaperAppearance.js +18 -0
  48. package/dist/runtime/plugins/paper-appearance.client.d.ts +6 -0
  49. package/dist/runtime/plugins/paper-appearance.client.js +16 -0
  50. package/dist/runtime/utils/paperAppearance.d.ts +10 -0
  51. package/dist/runtime/utils/paperAppearance.js +18 -0
  52. package/dist/types.d.mts +7 -0
  53. package/package.json +61 -4
  54. package/src/module.ts +71 -0
  55. package/src/runtime/assets/styles/index.scss +13 -0
  56. package/src/runtime/assets/styles/partials/_variables.scss +111 -0
  57. package/src/runtime/assets/styles/partials/checkbox.scss +64 -0
  58. package/src/runtime/assets/styles/partials/contextmenu.scss +25 -0
  59. package/src/runtime/assets/styles/partials/desktop.scss +70 -0
  60. package/src/runtime/assets/styles/partials/input.scss +55 -0
  61. package/src/runtime/assets/styles/partials/menu.scss +88 -0
  62. package/src/runtime/assets/styles/partials/scrollbar.scss +35 -0
  63. package/src/runtime/assets/styles/partials/tabs.scss +68 -0
  64. package/src/runtime/assets/styles/partials/window-chrome.scss +57 -0
  65. package/src/runtime/assets/styles/partials/window.scss +32 -0
  66. package/src/runtime/components/ButtonWindowNav.vue +12 -0
  67. package/src/runtime/components/Desktop.vue +22 -0
  68. package/src/runtime/components/DesktopContent.vue +14 -0
  69. package/src/runtime/components/DesktopWindow.vue +76 -0
  70. package/src/runtime/components/DesktopWindowContent.vue +31 -0
  71. package/src/runtime/components/DesktopWindowIframe.vue +30 -0
  72. package/src/runtime/components/DesktopWindowNav.vue +115 -0
  73. package/src/runtime/components/DesktopWindowNavButton.vue +55 -0
  74. package/src/runtime/components/PaperSystemBar.vue +1482 -0
  75. package/src/runtime/components/PaperWindowSnapHints.vue +7 -0
  76. package/src/runtime/composables/usePaperAppearance.ts +26 -0
  77. package/src/runtime/plugins/paper-appearance.client.ts +23 -0
  78. package/src/runtime/utils/paperAppearance.ts +31 -0
@@ -0,0 +1,158 @@
1
+ @charset "UTF-8";
2
+ /* Light (default) — warm neutral Paper */
3
+ :root,
4
+ html[data-owd-appearance=light] {
5
+ color-scheme: light;
6
+ --paper-bg: #ececee;
7
+ --paper-surface: #f4f4f6;
8
+ --paper-menu-bg: #f4f4f6;
9
+ --paper-menu-header-bg: #f4f4f6;
10
+ /* Same mix ratio in both schemes → equal hairline weight on light/dark */
11
+ --paper-border: color-mix(in srgb, var(--paper-text) 10%, var(--paper-surface));
12
+ --paper-border-window: color-mix(in srgb, var(--paper-text) 18%, var(--paper-surface));
13
+ --paper-grid-color: color-mix(in srgb, var(--paper-text) 6%, transparent);
14
+ --paper-line: var(--paper-border);
15
+ --paper-line-strong: var(--paper-border);
16
+ --paper-text: #2c2c30;
17
+ --paper-text-secondary: #68686f;
18
+ --paper-text-tertiary: #98989f;
19
+ --paper-accent: #3b6fd4;
20
+ --paper-accent-soft: #e8eef8;
21
+ --paper-scrim: rgba(44, 44, 48, 0.14);
22
+ --paper-scrollbar-track: transparent;
23
+ --paper-scrollbar-thumb: var(--paper-border);
24
+ --paper-scrollbar-thumb-hover: color-mix(in srgb, var(--paper-text) 22%, var(--paper-surface));
25
+ --paper-shadow-menu: none;
26
+ --paper-shadow-bar: none;
27
+ --paper-shadow-window:
28
+ 0 1px 2px rgba(44, 44, 48, 0.04),
29
+ 0 8px 24px -6px rgba(44, 44, 48, 0.08);
30
+ }
31
+
32
+ /* Dark — lifted surfaces, same accent family */
33
+ html[data-owd-appearance=dark] {
34
+ color-scheme: dark;
35
+ --paper-bg: #1c1c20;
36
+ --paper-surface: #26262a;
37
+ --paper-menu-bg: #26262a;
38
+ --paper-menu-header-bg: #26262a;
39
+ --paper-border: color-mix(in srgb, var(--paper-text) 10%, var(--paper-surface));
40
+ --paper-border-window: color-mix(in srgb, var(--paper-text) 12%, var(--paper-surface));
41
+ --paper-grid-color: color-mix(in srgb, var(--paper-text) 3.5%, transparent);
42
+ --paper-line: var(--paper-border);
43
+ --paper-line-strong: var(--paper-border);
44
+ --paper-text: #e6e6ea;
45
+ --paper-text-secondary: #94949c;
46
+ --paper-text-tertiary: #707078;
47
+ --paper-accent: #3b6fd4;
48
+ --paper-accent-soft: rgba(59, 111, 212, 0.14);
49
+ --paper-scrim: rgba(0, 0, 0, 0.35);
50
+ --paper-scrollbar-track: transparent;
51
+ --paper-scrollbar-thumb: var(--paper-border);
52
+ --paper-scrollbar-thumb-hover: color-mix(in srgb, var(--paper-text) 22%, var(--paper-surface));
53
+ --paper-shadow-menu: none;
54
+ --paper-shadow-bar: none;
55
+ --paper-shadow-window:
56
+ 0 1px 2px rgba(0, 0, 0, 0.15),
57
+ 0 10px 28px -6px rgba(0, 0, 0, 0.28);
58
+ }
59
+
60
+ /* Shared tokens (both schemes) */
61
+ :root {
62
+ --paper-font: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto,
63
+ sans-serif;
64
+ --paper-mono: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
65
+ --paper-bar-height: 2.75rem;
66
+ --paper-nav-height: 2rem;
67
+ --paper-nav-button-size: 1.75rem;
68
+ /* Single corner scale — containers, controls, and PrimeVue overlays */
69
+ --paper-radius: 6px;
70
+ --paper-radius-pill: 9999px;
71
+ --paper-radius-circle: 50%;
72
+ --paper-radius-sm: var(--paper-radius);
73
+ --paper-radius-md: var(--paper-radius);
74
+ --paper-radius-lg: var(--paper-radius);
75
+ --paper-z-bar: 10061;
76
+ --paper-z-menu: 10070;
77
+ /* PrimeVue 4 — navigation / overlay surfaces */
78
+ --p-content-background: var(--paper-menu-bg);
79
+ --p-content-border-color: var(--paper-border);
80
+ --p-content-color: var(--paper-text);
81
+ --p-content-border-radius: var(--paper-radius);
82
+ --p-contextmenu-background: var(--paper-menu-bg);
83
+ --p-contextmenu-border-color: var(--paper-border);
84
+ --p-contextmenu-border-radius: var(--paper-radius);
85
+ --p-contextmenu-color: var(--paper-text);
86
+ --p-contextmenu-shadow: var(--paper-shadow-menu);
87
+ --p-contextmenu-submenu-background: var(--paper-menu-bg);
88
+ --p-menu-background: var(--paper-menu-bg);
89
+ --p-menu-border-color: var(--paper-border);
90
+ --p-menu-border-radius: var(--paper-radius);
91
+ --p-menu-color: var(--paper-text);
92
+ --p-menu-shadow: var(--paper-shadow-menu);
93
+ --p-menu-submenu-background: var(--paper-menu-bg);
94
+ --p-tieredmenu-background: var(--paper-menu-bg);
95
+ --p-tieredmenu-border-color: var(--paper-border);
96
+ --p-tieredmenu-border-radius: var(--paper-radius);
97
+ --p-tieredmenu-color: var(--paper-text);
98
+ --p-tieredmenu-shadow: var(--paper-shadow-menu);
99
+ --p-tieredmenu-submenu-background: var(--paper-menu-bg);
100
+ --p-menubar-submenu-background: var(--paper-menu-bg);
101
+ --p-menubar-submenu-border-color: var(--paper-border);
102
+ --p-menubar-submenu-border-radius: var(--paper-radius);
103
+ --p-menubar-submenu-color: var(--paper-text);
104
+ --p-menubar-submenu-shadow: var(--paper-shadow-menu);
105
+ }
106
+
107
+ /* PrimeVue Checkbox inside paper theme */
108
+ .owd-desktop--paper {
109
+ --p-checkbox-width: 16px;
110
+ --p-checkbox-height: 16px;
111
+ --p-checkbox-border-radius: 4px;
112
+ --p-checkbox-background: var(--paper-surface);
113
+ --p-checkbox-hover-background: color-mix(in srgb, var(--paper-surface) 95%, var(--paper-text));
114
+ --p-checkbox-checked-background: var(--paper-accent);
115
+ --p-checkbox-border-color: var(--paper-border);
116
+ --p-checkbox-hover-border-color: color-mix(in srgb, var(--paper-border) 70%, var(--paper-text));
117
+ --p-checkbox-checked-border-color: var(--paper-accent);
118
+ --p-checkbox-shadow: none;
119
+ }
120
+ .owd-desktop--paper .p-checkbox {
121
+ display: inline-flex;
122
+ position: relative;
123
+ user-select: none;
124
+ vertical-align: middle;
125
+ width: var(--p-checkbox-width);
126
+ height: var(--p-checkbox-height);
127
+ margin-top: -2px;
128
+ }
129
+ .owd-desktop--paper .p-checkbox .p-checkbox-box {
130
+ display: flex;
131
+ align-items: center;
132
+ justify-content: center;
133
+ border: 1px solid var(--p-checkbox-border-color);
134
+ background: var(--p-checkbox-background);
135
+ width: var(--p-checkbox-width) !important;
136
+ height: var(--p-checkbox-height) !important;
137
+ min-width: var(--p-checkbox-width) !important;
138
+ min-height: var(--p-checkbox-height) !important;
139
+ border-radius: var(--p-checkbox-border-radius);
140
+ transition: background 0.15s, border-color 0.15s, box-shadow 0.15s;
141
+ }
142
+ .owd-desktop--paper .p-checkbox .p-checkbox-box .p-checkbox-icon {
143
+ font-size: 10px;
144
+ transition: transform 0.1s;
145
+ }
146
+ .owd-desktop--paper .p-checkbox.p-checkbox-checked .p-checkbox-box {
147
+ background: var(--p-checkbox-checked-background);
148
+ border-color: var(--p-checkbox-checked-border-color);
149
+ color: white;
150
+ }
151
+ .owd-desktop--paper .p-checkbox:not(.p-checkbox-disabled):hover .p-checkbox-box {
152
+ border-color: var(--p-checkbox-hover-border-color);
153
+ background: var(--p-checkbox-hover-background);
154
+ }
155
+ .owd-desktop--paper .p-checkbox:not(.p-checkbox-disabled):hover.p-checkbox-checked .p-checkbox-box {
156
+ background: var(--p-checkbox-checked-background);
157
+ border-color: var(--p-checkbox-checked-border-color);
158
+ }
@@ -0,0 +1,22 @@
1
+ .p-contextmenu {
2
+ font-family: var(--paper-font);
3
+ font-size: 0.8125rem;
4
+ color: var(--paper-text);
5
+ background-color: var(--paper-menu-bg);
6
+ border: 1px solid var(--paper-border);
7
+ border-radius: var(--paper-radius);
8
+ box-shadow: none;
9
+ }
10
+ .p-contextmenu .p-contextmenu-item-content {
11
+ border-radius: var(--paper-radius);
12
+ transition: background-color 0.12s ease, color 0.12s ease;
13
+ }
14
+ .p-contextmenu .p-contextmenu-item:not(.p-disabled) > .p-contextmenu-item-content:hover,
15
+ .p-contextmenu .p-contextmenu-item.p-focus > .p-contextmenu-item-content {
16
+ background: var(--paper-accent-soft);
17
+ color: var(--paper-accent);
18
+ }
19
+ .p-contextmenu .p-contextmenu-separator {
20
+ margin: 0.25rem 0.375rem;
21
+ border-top: 1px solid var(--paper-border);
22
+ }
@@ -0,0 +1,69 @@
1
+ @charset "UTF-8";
2
+ /* Desktop shell: no document scrollbars — scroll only inside windows/apps */
3
+ html,
4
+ body {
5
+ height: 100%;
6
+ margin: 0;
7
+ overflow: hidden;
8
+ overscroll-behavior: none;
9
+ }
10
+
11
+ #__nuxt {
12
+ height: 100%;
13
+ overflow: hidden;
14
+ }
15
+
16
+ .owd-desktop.owd-desktop--paper {
17
+ display: flex;
18
+ flex-direction: column;
19
+ box-sizing: border-box;
20
+ width: 100%;
21
+ max-width: 100%;
22
+ height: 100dvh;
23
+ overflow: hidden;
24
+ background: var(--paper-bg);
25
+ background-image: linear-gradient(var(--paper-grid-color) 1px, transparent 1px), linear-gradient(90deg, var(--paper-grid-color) 1px, transparent 1px);
26
+ background-size: 80px 80px;
27
+ background-position: center;
28
+ color: var(--paper-text);
29
+ font-family: var(--paper-font);
30
+ font-size: 14px;
31
+ line-height: 1.5;
32
+ -webkit-font-smoothing: antialiased;
33
+ }
34
+
35
+ .owd-desktop--paper .owd-desktop__system-bar {
36
+ position: relative;
37
+ z-index: var(--paper-z-bar);
38
+ flex-shrink: 0;
39
+ }
40
+
41
+ .owd-desktop--paper .paper-shell__stage {
42
+ position: relative;
43
+ flex: 1;
44
+ min-height: 0;
45
+ overflow: hidden;
46
+ }
47
+
48
+ .owd-desktop--paper .desktop-window__content--centered {
49
+ display: flex;
50
+ flex-direction: column;
51
+ justify-content: center;
52
+ align-items: center;
53
+ height: 100%;
54
+ min-height: 0;
55
+ text-align: center;
56
+ }
57
+
58
+ .owd-desktop--paper .desktop-window__content--centered > * {
59
+ width: 100%;
60
+ }
61
+
62
+ .owd-desktop--paper .desktop-window__content a {
63
+ color: var(--paper-accent);
64
+ text-decoration: none;
65
+ }
66
+
67
+ .owd-desktop--paper .desktop-window__content a:hover {
68
+ text-decoration: underline;
69
+ }
@@ -0,0 +1,155 @@
1
+ @charset "UTF-8";
2
+ /* Light (default) — warm neutral Paper */
3
+ :root,
4
+ html[data-owd-appearance=light] {
5
+ color-scheme: light;
6
+ --paper-bg: #ececee;
7
+ --paper-surface: #f4f4f6;
8
+ --paper-menu-bg: #f4f4f6;
9
+ --paper-menu-header-bg: #f4f4f6;
10
+ /* Same mix ratio in both schemes → equal hairline weight on light/dark */
11
+ --paper-border: color-mix(in srgb, var(--paper-text) 10%, var(--paper-surface));
12
+ --paper-border-window: color-mix(in srgb, var(--paper-text) 18%, var(--paper-surface));
13
+ --paper-grid-color: color-mix(in srgb, var(--paper-text) 6%, transparent);
14
+ --paper-line: var(--paper-border);
15
+ --paper-line-strong: var(--paper-border);
16
+ --paper-text: #2c2c30;
17
+ --paper-text-secondary: #68686f;
18
+ --paper-text-tertiary: #98989f;
19
+ --paper-accent: #3b6fd4;
20
+ --paper-accent-soft: #e8eef8;
21
+ --paper-scrim: rgba(44, 44, 48, 0.14);
22
+ --paper-scrollbar-track: transparent;
23
+ --paper-scrollbar-thumb: var(--paper-border);
24
+ --paper-scrollbar-thumb-hover: color-mix(in srgb, var(--paper-text) 22%, var(--paper-surface));
25
+ --paper-shadow-menu: none;
26
+ --paper-shadow-bar: none;
27
+ --paper-shadow-window:
28
+ 0 1px 2px rgba(44, 44, 48, 0.04),
29
+ 0 8px 24px -6px rgba(44, 44, 48, 0.08);
30
+ }
31
+
32
+ /* Dark — lifted surfaces, same accent family */
33
+ html[data-owd-appearance=dark] {
34
+ color-scheme: dark;
35
+ --paper-bg: #1c1c20;
36
+ --paper-surface: #26262a;
37
+ --paper-menu-bg: #26262a;
38
+ --paper-menu-header-bg: #26262a;
39
+ --paper-border: color-mix(in srgb, var(--paper-text) 10%, var(--paper-surface));
40
+ --paper-border-window: color-mix(in srgb, var(--paper-text) 12%, var(--paper-surface));
41
+ --paper-grid-color: color-mix(in srgb, var(--paper-text) 3.5%, transparent);
42
+ --paper-line: var(--paper-border);
43
+ --paper-line-strong: var(--paper-border);
44
+ --paper-text: #e6e6ea;
45
+ --paper-text-secondary: #94949c;
46
+ --paper-text-tertiary: #707078;
47
+ --paper-accent: #3b6fd4;
48
+ --paper-accent-soft: rgba(59, 111, 212, 0.14);
49
+ --paper-scrim: rgba(0, 0, 0, 0.35);
50
+ --paper-scrollbar-track: transparent;
51
+ --paper-scrollbar-thumb: var(--paper-border);
52
+ --paper-scrollbar-thumb-hover: color-mix(in srgb, var(--paper-text) 22%, var(--paper-surface));
53
+ --paper-shadow-menu: none;
54
+ --paper-shadow-bar: none;
55
+ --paper-shadow-window:
56
+ 0 1px 2px rgba(0, 0, 0, 0.15),
57
+ 0 10px 28px -6px rgba(0, 0, 0, 0.28);
58
+ }
59
+
60
+ /* Shared tokens (both schemes) */
61
+ :root {
62
+ --paper-font: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto,
63
+ sans-serif;
64
+ --paper-mono: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
65
+ --paper-bar-height: 2.75rem;
66
+ --paper-nav-height: 2rem;
67
+ --paper-nav-button-size: 1.75rem;
68
+ /* Single corner scale — containers, controls, and PrimeVue overlays */
69
+ --paper-radius: 6px;
70
+ --paper-radius-pill: 9999px;
71
+ --paper-radius-circle: 50%;
72
+ --paper-radius-sm: var(--paper-radius);
73
+ --paper-radius-md: var(--paper-radius);
74
+ --paper-radius-lg: var(--paper-radius);
75
+ --paper-z-bar: 10061;
76
+ --paper-z-menu: 10070;
77
+ /* PrimeVue 4 — navigation / overlay surfaces */
78
+ --p-content-background: var(--paper-menu-bg);
79
+ --p-content-border-color: var(--paper-border);
80
+ --p-content-color: var(--paper-text);
81
+ --p-content-border-radius: var(--paper-radius);
82
+ --p-contextmenu-background: var(--paper-menu-bg);
83
+ --p-contextmenu-border-color: var(--paper-border);
84
+ --p-contextmenu-border-radius: var(--paper-radius);
85
+ --p-contextmenu-color: var(--paper-text);
86
+ --p-contextmenu-shadow: var(--paper-shadow-menu);
87
+ --p-contextmenu-submenu-background: var(--paper-menu-bg);
88
+ --p-menu-background: var(--paper-menu-bg);
89
+ --p-menu-border-color: var(--paper-border);
90
+ --p-menu-border-radius: var(--paper-radius);
91
+ --p-menu-color: var(--paper-text);
92
+ --p-menu-shadow: var(--paper-shadow-menu);
93
+ --p-menu-submenu-background: var(--paper-menu-bg);
94
+ --p-tieredmenu-background: var(--paper-menu-bg);
95
+ --p-tieredmenu-border-color: var(--paper-border);
96
+ --p-tieredmenu-border-radius: var(--paper-radius);
97
+ --p-tieredmenu-color: var(--paper-text);
98
+ --p-tieredmenu-shadow: var(--paper-shadow-menu);
99
+ --p-tieredmenu-submenu-background: var(--paper-menu-bg);
100
+ --p-menubar-submenu-background: var(--paper-menu-bg);
101
+ --p-menubar-submenu-border-color: var(--paper-border);
102
+ --p-menubar-submenu-border-radius: var(--paper-radius);
103
+ --p-menubar-submenu-color: var(--paper-text);
104
+ --p-menubar-submenu-shadow: var(--paper-shadow-menu);
105
+ }
106
+
107
+ /* Input elements inside the paper theme */
108
+ .owd-desktop--paper {
109
+ /* Style for InputText */
110
+ }
111
+ .owd-desktop--paper .p-inputtext {
112
+ font-family: var(--paper-font);
113
+ font-size: 14px;
114
+ background: var(--paper-surface);
115
+ border: 1px solid var(--paper-border);
116
+ border-radius: var(--paper-radius);
117
+ color: var(--paper-text);
118
+ padding: 6px 12px;
119
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
120
+ box-shadow: none;
121
+ }
122
+ .owd-desktop--paper .p-inputtext::placeholder {
123
+ color: var(--paper-text-tertiary);
124
+ }
125
+ .owd-desktop--paper .p-inputtext:hover {
126
+ border-color: color-mix(in srgb, var(--paper-border) 70%, var(--paper-text));
127
+ }
128
+ .owd-desktop--paper .p-inputtext:focus {
129
+ outline: none;
130
+ border-color: var(--paper-accent);
131
+ box-shadow: 0 0 0 2px var(--paper-accent-soft);
132
+ }
133
+ .owd-desktop--paper {
134
+ /* Style for generic buttons */
135
+ }
136
+ .owd-desktop--paper .p-button {
137
+ font-family: var(--paper-font);
138
+ font-size: 14px;
139
+ font-weight: 500;
140
+ color: var(--paper-text);
141
+ background: var(--paper-surface) !important;
142
+ border: 1px solid var(--paper-border) !important;
143
+ border-radius: var(--paper-radius);
144
+ padding: 6px 12px;
145
+ cursor: pointer;
146
+ transition: background 0.15s ease-in-out, border-color 0.15s ease-in-out;
147
+ }
148
+ .owd-desktop--paper .p-button:hover {
149
+ background: color-mix(in srgb, var(--paper-surface) 92%, var(--paper-text)) !important;
150
+ border-color: color-mix(in srgb, var(--paper-border) 60%, var(--paper-text)) !important;
151
+ }
152
+ .owd-desktop--paper .p-button:active {
153
+ background: color-mix(in srgb, var(--paper-surface) 84%, var(--paper-text)) !important;
154
+ border-color: color-mix(in srgb, var(--paper-border) 40%, var(--paper-text)) !important;
155
+ }
@@ -0,0 +1,72 @@
1
+ /* Popup / overlay menus (teleport to body) */
2
+ .p-menu,
3
+ .p-tieredmenu,
4
+ .p-menubar .p-menubar-submenu {
5
+ font-family: var(--paper-font);
6
+ font-size: 0.8125rem;
7
+ color: var(--paper-text);
8
+ background-color: var(--paper-menu-bg);
9
+ border: 1px solid var(--paper-border);
10
+ border-radius: var(--paper-radius);
11
+ box-shadow: none;
12
+ }
13
+
14
+ .p-menu .p-menu-list {
15
+ padding: 0.25rem;
16
+ }
17
+ .p-menu .p-menu-item-content {
18
+ border-radius: var(--paper-radius);
19
+ transition: background-color 0.12s ease, color 0.12s ease;
20
+ }
21
+ .p-menu .p-menu-item:not(.p-disabled) > .p-menu-item-content:hover,
22
+ .p-menu .p-menu-item.p-focus > .p-menu-item-content {
23
+ background: var(--paper-accent-soft);
24
+ color: var(--paper-accent);
25
+ }
26
+ .p-menu .p-menu-separator {
27
+ margin: 0.25rem 0.375rem;
28
+ border-top: 1px solid var(--paper-border);
29
+ }
30
+
31
+ .p-tieredmenu .p-tieredmenu-root-list,
32
+ .p-tieredmenu .p-tieredmenu-submenu {
33
+ padding: 0.25rem;
34
+ }
35
+ .p-tieredmenu .p-tieredmenu-item-content {
36
+ border-radius: var(--paper-radius);
37
+ transition: background-color 0.12s ease, color 0.12s ease;
38
+ }
39
+ .p-tieredmenu .p-tieredmenu-item:not(.p-disabled) > .p-tieredmenu-item-content:hover,
40
+ .p-tieredmenu .p-tieredmenu-item.p-focus > .p-tieredmenu-item-content,
41
+ .p-tieredmenu .p-tieredmenu-item-active > .p-tieredmenu-item-content {
42
+ background: var(--paper-accent-soft);
43
+ color: var(--paper-accent);
44
+ }
45
+ .p-tieredmenu .p-tieredmenu-separator {
46
+ margin: 0.25rem 0.375rem;
47
+ border-top: 1px solid var(--paper-border);
48
+ }
49
+ .p-tieredmenu .p-tieredmenu-submenu {
50
+ background-color: var(--paper-menu-bg);
51
+ border: 1px solid var(--paper-border);
52
+ border-radius: var(--paper-radius);
53
+ box-shadow: none;
54
+ }
55
+
56
+ .p-menubar .p-menubar-submenu {
57
+ padding: 0.25rem;
58
+ border-radius: var(--paper-radius);
59
+ }
60
+ .p-menubar .p-menubar-submenu .p-menubar-item-content {
61
+ border-radius: var(--paper-radius);
62
+ transition: background-color 0.12s ease, color 0.12s ease;
63
+ }
64
+ .p-menubar .p-menubar-submenu .p-menubar-item:not(.p-disabled) > .p-menubar-item-content:hover,
65
+ .p-menubar .p-menubar-submenu .p-menubar-item.p-focus > .p-menubar-item-content {
66
+ background: var(--paper-accent-soft);
67
+ color: var(--paper-accent);
68
+ }
69
+ .p-menubar .p-menubar-separator {
70
+ margin: 0.25rem 0.375rem;
71
+ border-top: 1px solid var(--paper-border);
72
+ }
@@ -0,0 +1,25 @@
1
+ @charset "UTF-8";
2
+ /* Scroll only inside window content and app panels — not on body */
3
+ .owd-desktop--paper .desktop-window__content {
4
+ scrollbar-width: thin;
5
+ scrollbar-color: var(--paper-scrollbar-thumb) var(--paper-scrollbar-track);
6
+ }
7
+ .owd-desktop--paper .desktop-window__content::-webkit-scrollbar {
8
+ width: 8px;
9
+ height: 8px;
10
+ }
11
+ .owd-desktop--paper .desktop-window__content::-webkit-scrollbar-track {
12
+ background: var(--paper-scrollbar-track);
13
+ }
14
+ .owd-desktop--paper .desktop-window__content::-webkit-scrollbar-thumb {
15
+ background-color: var(--paper-scrollbar-thumb);
16
+ border: 2px solid transparent;
17
+ border-radius: var(--paper-radius-pill);
18
+ background-clip: padding-box;
19
+ }
20
+ .owd-desktop--paper .desktop-window__content::-webkit-scrollbar-thumb:hover {
21
+ background-color: var(--paper-scrollbar-thumb-hover);
22
+ }
23
+ .owd-desktop--paper .desktop-window__content::-webkit-scrollbar-corner {
24
+ background: transparent;
25
+ }
@@ -0,0 +1,163 @@
1
+ @charset "UTF-8";
2
+ /* Light (default) — warm neutral Paper */
3
+ :root,
4
+ html[data-owd-appearance=light] {
5
+ color-scheme: light;
6
+ --paper-bg: #ececee;
7
+ --paper-surface: #f4f4f6;
8
+ --paper-menu-bg: #f4f4f6;
9
+ --paper-menu-header-bg: #f4f4f6;
10
+ /* Same mix ratio in both schemes → equal hairline weight on light/dark */
11
+ --paper-border: color-mix(in srgb, var(--paper-text) 10%, var(--paper-surface));
12
+ --paper-border-window: color-mix(in srgb, var(--paper-text) 18%, var(--paper-surface));
13
+ --paper-grid-color: color-mix(in srgb, var(--paper-text) 6%, transparent);
14
+ --paper-line: var(--paper-border);
15
+ --paper-line-strong: var(--paper-border);
16
+ --paper-text: #2c2c30;
17
+ --paper-text-secondary: #68686f;
18
+ --paper-text-tertiary: #98989f;
19
+ --paper-accent: #3b6fd4;
20
+ --paper-accent-soft: #e8eef8;
21
+ --paper-scrim: rgba(44, 44, 48, 0.14);
22
+ --paper-scrollbar-track: transparent;
23
+ --paper-scrollbar-thumb: var(--paper-border);
24
+ --paper-scrollbar-thumb-hover: color-mix(in srgb, var(--paper-text) 22%, var(--paper-surface));
25
+ --paper-shadow-menu: none;
26
+ --paper-shadow-bar: none;
27
+ --paper-shadow-window:
28
+ 0 1px 2px rgba(44, 44, 48, 0.04),
29
+ 0 8px 24px -6px rgba(44, 44, 48, 0.08);
30
+ }
31
+
32
+ /* Dark — lifted surfaces, same accent family */
33
+ html[data-owd-appearance=dark] {
34
+ color-scheme: dark;
35
+ --paper-bg: #1c1c20;
36
+ --paper-surface: #26262a;
37
+ --paper-menu-bg: #26262a;
38
+ --paper-menu-header-bg: #26262a;
39
+ --paper-border: color-mix(in srgb, var(--paper-text) 10%, var(--paper-surface));
40
+ --paper-border-window: color-mix(in srgb, var(--paper-text) 12%, var(--paper-surface));
41
+ --paper-grid-color: color-mix(in srgb, var(--paper-text) 3.5%, transparent);
42
+ --paper-line: var(--paper-border);
43
+ --paper-line-strong: var(--paper-border);
44
+ --paper-text: #e6e6ea;
45
+ --paper-text-secondary: #94949c;
46
+ --paper-text-tertiary: #707078;
47
+ --paper-accent: #3b6fd4;
48
+ --paper-accent-soft: rgba(59, 111, 212, 0.14);
49
+ --paper-scrim: rgba(0, 0, 0, 0.35);
50
+ --paper-scrollbar-track: transparent;
51
+ --paper-scrollbar-thumb: var(--paper-border);
52
+ --paper-scrollbar-thumb-hover: color-mix(in srgb, var(--paper-text) 22%, var(--paper-surface));
53
+ --paper-shadow-menu: none;
54
+ --paper-shadow-bar: none;
55
+ --paper-shadow-window:
56
+ 0 1px 2px rgba(0, 0, 0, 0.15),
57
+ 0 10px 28px -6px rgba(0, 0, 0, 0.28);
58
+ }
59
+
60
+ /* Shared tokens (both schemes) */
61
+ :root {
62
+ --paper-font: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto,
63
+ sans-serif;
64
+ --paper-mono: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
65
+ --paper-bar-height: 2.75rem;
66
+ --paper-nav-height: 2rem;
67
+ --paper-nav-button-size: 1.75rem;
68
+ /* Single corner scale — containers, controls, and PrimeVue overlays */
69
+ --paper-radius: 6px;
70
+ --paper-radius-pill: 9999px;
71
+ --paper-radius-circle: 50%;
72
+ --paper-radius-sm: var(--paper-radius);
73
+ --paper-radius-md: var(--paper-radius);
74
+ --paper-radius-lg: var(--paper-radius);
75
+ --paper-z-bar: 10061;
76
+ --paper-z-menu: 10070;
77
+ /* PrimeVue 4 — navigation / overlay surfaces */
78
+ --p-content-background: var(--paper-menu-bg);
79
+ --p-content-border-color: var(--paper-border);
80
+ --p-content-color: var(--paper-text);
81
+ --p-content-border-radius: var(--paper-radius);
82
+ --p-contextmenu-background: var(--paper-menu-bg);
83
+ --p-contextmenu-border-color: var(--paper-border);
84
+ --p-contextmenu-border-radius: var(--paper-radius);
85
+ --p-contextmenu-color: var(--paper-text);
86
+ --p-contextmenu-shadow: var(--paper-shadow-menu);
87
+ --p-contextmenu-submenu-background: var(--paper-menu-bg);
88
+ --p-menu-background: var(--paper-menu-bg);
89
+ --p-menu-border-color: var(--paper-border);
90
+ --p-menu-border-radius: var(--paper-radius);
91
+ --p-menu-color: var(--paper-text);
92
+ --p-menu-shadow: var(--paper-shadow-menu);
93
+ --p-menu-submenu-background: var(--paper-menu-bg);
94
+ --p-tieredmenu-background: var(--paper-menu-bg);
95
+ --p-tieredmenu-border-color: var(--paper-border);
96
+ --p-tieredmenu-border-radius: var(--paper-radius);
97
+ --p-tieredmenu-color: var(--paper-text);
98
+ --p-tieredmenu-shadow: var(--paper-shadow-menu);
99
+ --p-tieredmenu-submenu-background: var(--paper-menu-bg);
100
+ --p-menubar-submenu-background: var(--paper-menu-bg);
101
+ --p-menubar-submenu-border-color: var(--paper-border);
102
+ --p-menubar-submenu-border-radius: var(--paper-radius);
103
+ --p-menubar-submenu-color: var(--paper-text);
104
+ --p-menubar-submenu-shadow: var(--paper-shadow-menu);
105
+ }
106
+
107
+ /* PrimeVue Tabs inside paper theme */
108
+ .owd-desktop--paper .p-tabs {
109
+ display: flex;
110
+ flex-direction: column;
111
+ width: 100%;
112
+ }
113
+ .owd-desktop--paper .p-tabs .p-tablist {
114
+ background: transparent;
115
+ border-bottom: 1px solid var(--paper-border);
116
+ }
117
+ .owd-desktop--paper .p-tabs .p-tablist-tab-list {
118
+ display: flex;
119
+ flex-direction: row;
120
+ gap: 4px;
121
+ border: 0;
122
+ margin: 0;
123
+ padding: 0;
124
+ list-style: none;
125
+ }
126
+ .owd-desktop--paper .p-tabs .p-tablist-tab-list .p-tab {
127
+ font-family: var(--paper-font);
128
+ font-size: 12px;
129
+ font-weight: 500;
130
+ color: var(--paper-text-secondary);
131
+ background: transparent;
132
+ border: 1px solid transparent;
133
+ border-bottom: 0;
134
+ border-top-left-radius: var(--paper-radius);
135
+ border-top-right-radius: var(--paper-radius);
136
+ padding: 4px 10px;
137
+ cursor: pointer;
138
+ transition: all 0.15s ease-in-out;
139
+ margin-bottom: -1px;
140
+ }
141
+ .owd-desktop--paper .p-tabs .p-tablist-tab-list .p-tab:hover {
142
+ color: var(--paper-text);
143
+ background: color-mix(in srgb, var(--paper-surface) 95%, var(--paper-text));
144
+ border-color: transparent;
145
+ border-bottom: 0;
146
+ }
147
+ .owd-desktop--paper .p-tabs .p-tablist-tab-list .p-tab.p-tab-active {
148
+ color: var(--paper-accent);
149
+ background: var(--paper-surface);
150
+ border-color: var(--paper-border);
151
+ border-bottom: 1px solid var(--paper-surface);
152
+ }
153
+ .owd-desktop--paper .p-tabs .p-tablist-tab-list .p-tab.p-tab-active:hover {
154
+ border-color: var(--paper-border);
155
+ border-bottom: 1px solid var(--paper-surface);
156
+ background: var(--paper-surface);
157
+ }
158
+ .owd-desktop--paper .p-tabs .p-tabpanels {
159
+ background: transparent;
160
+ padding: 12px 0 0 0;
161
+ border: 0;
162
+ color: var(--paper-text);
163
+ }