ssovee-os-web-ui 0.1.25 → 0.1.26

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.
package/README.md CHANGED
@@ -6,18 +6,13 @@ Reusable React UI components for building shared desktop-style web experiences.
6
6
 
7
7
  This package provides a shared set of React UI components for SSOVEE applications. It includes themed UI primitives, hooks, and desktop-style window wrappers for app-like layouts.
8
8
 
9
- ## What’s new in v0.1.24
10
-
11
- - Added window container components for app-style layouts
12
- - Documented usage examples for both window variants
13
- - Improved package exports for easier consumption
14
-
15
9
  ## Features
16
10
 
17
11
  - Ready-to-use React UI components
18
12
  - Packaged theme stylesheet for shared visual tokens
19
13
  - TypeScript support for the main public components
20
14
  - Window components for desktop-style app shells
15
+ - Plugin playground support for local plugin testing
21
16
 
22
17
  ## Install
23
18
 
@@ -64,6 +59,7 @@ export function Example() {
64
59
 
65
60
  ### Simple window
66
61
 
62
+ {% raw %}
67
63
  ```tsx
68
64
  import { WindowWithoutSideMenu, Typography } from "ssovee-os-web-ui";
69
65
 
@@ -86,9 +82,11 @@ export function NotesWindow() {
86
82
  );
87
83
  }
88
84
  ```
85
+ {% endraw %}
89
86
 
90
87
  ### Window with sidebar menu
91
88
 
89
+ {% raw %}
92
90
  ```tsx
93
91
  import { WindowWithSideMenu, Typography, Button } from "ssovee-os-web-ui";
94
92
 
@@ -123,6 +121,7 @@ export function SettingsWindow() {
123
121
  );
124
122
  }
125
123
  ```
124
+ {% endraw %}
126
125
 
127
126
  ## Hooks
128
127
 
@@ -163,6 +162,7 @@ The package exports these components and types for external use:
163
162
  - `Tabs`
164
163
  - `Typography`
165
164
  - `ImageWithPlaceholder`
165
+ - `PluginPlayground`
166
166
  - `WindowWithSideMenu`
167
167
  - `WindowWithoutSideMenu`
168
168
  - `Table` and its subcomponents
package/dist/index.css CHANGED
@@ -30,6 +30,10 @@
30
30
  --color-blue-500: oklch(62.3% 0.214 259.815);
31
31
  --color-blue-700: oklch(48.8% 0.243 264.376);
32
32
  --color-blue-800: oklch(42.4% 0.199 265.638);
33
+ --color-slate-100: oklch(96.8% 0.007 247.896);
34
+ --color-slate-700: oklch(37.2% 0.044 257.287);
35
+ --color-slate-900: oklch(20.8% 0.042 265.755);
36
+ --color-slate-950: oklch(12.9% 0.042 264.695);
33
37
  --color-gray-500: oklch(55.1% 0.027 264.364);
34
38
  --color-neutral-100: oklch(97% 0 none);
35
39
  --color-neutral-200: oklch(92.2% 0 none);
@@ -79,6 +83,7 @@
79
83
  --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
80
84
  --animate-bounce: bounce 1s infinite;
81
85
  --blur-sm: 8px;
86
+ --blur-md: 12px;
82
87
  --default-transition-duration: 150ms;
83
88
  --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
84
89
  --default-font-family: var(--font-sans);
@@ -285,6 +290,9 @@
285
290
  .bottom-4 {
286
291
  bottom: calc(var(--spacing) * 4);
287
292
  }
293
+ .bottom-6 {
294
+ bottom: calc(var(--spacing) * 6);
295
+ }
288
296
  .bottom-full {
289
297
  bottom: 100%;
290
298
  }
@@ -303,6 +311,9 @@
303
311
  .left-full {
304
312
  left: 100%;
305
313
  }
314
+ .z-40 {
315
+ z-index: 40;
316
+ }
306
317
  .z-50 {
307
318
  z-index: 50;
308
319
  }
@@ -459,6 +470,9 @@
459
470
  .h-full {
460
471
  height: 100%;
461
472
  }
473
+ .h-screen {
474
+ height: 100vh;
475
+ }
462
476
  .max-h-0 {
463
477
  max-height: 0px;
464
478
  }
@@ -510,6 +524,9 @@
510
524
  .w-full {
511
525
  width: 100%;
512
526
  }
527
+ .w-screen {
528
+ width: 100vw;
529
+ }
513
530
  .max-w-full {
514
531
  max-width: 100%;
515
532
  }
@@ -770,6 +787,12 @@
770
787
  .border-transparent {
771
788
  border-color: transparent;
772
789
  }
790
+ .border-white\/30 {
791
+ border-color: color-mix(in srgb, #fff 30%, transparent);
792
+ @supports (color: color-mix(in lab, red, red)) {
793
+ border-color: color-mix(in oklab, var(--color-white) 30%, transparent);
794
+ }
795
+ }
773
796
  .border-yellow-200 {
774
797
  border-color: var(--color-yellow-200);
775
798
  }
@@ -821,6 +844,12 @@
821
844
  background-color: color-mix(in oklab, var(--color-black) 50%, transparent);
822
845
  }
823
846
  }
847
+ .bg-black\/55 {
848
+ background-color: color-mix(in srgb, #000 55%, transparent);
849
+ @supports (color: color-mix(in lab, red, red)) {
850
+ background-color: color-mix(in oklab, var(--color-black) 55%, transparent);
851
+ }
852
+ }
824
853
  .bg-blue-50 {
825
854
  background-color: var(--color-blue-50);
826
855
  }
@@ -890,12 +919,27 @@
890
919
  .bg-white {
891
920
  background-color: var(--color-white);
892
921
  }
922
+ .bg-white\/75 {
923
+ background-color: color-mix(in srgb, #fff 75%, transparent);
924
+ @supports (color: color-mix(in lab, red, red)) {
925
+ background-color: color-mix(in oklab, var(--color-white) 75%, transparent);
926
+ }
927
+ }
893
928
  .bg-yellow-50 {
894
929
  background-color: var(--color-yellow-50);
895
930
  }
896
931
  .bg-yellow-500 {
897
932
  background-color: var(--color-yellow-500);
898
933
  }
934
+ .bg-cover {
935
+ background-size: cover;
936
+ }
937
+ .bg-center {
938
+ background-position: center;
939
+ }
940
+ .bg-no-repeat {
941
+ background-repeat: no-repeat;
942
+ }
899
943
  .object-cover {
900
944
  object-fit: cover;
901
945
  }
@@ -1158,6 +1202,9 @@
1158
1202
  .text-red-800 {
1159
1203
  color: var(--color-red-800);
1160
1204
  }
1205
+ .text-slate-900 {
1206
+ color: var(--color-slate-900);
1207
+ }
1161
1208
  .text-white {
1162
1209
  color: var(--color-white);
1163
1210
  }
@@ -1207,6 +1254,12 @@
1207
1254
  --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
1208
1255
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1209
1256
  }
1257
+ .shadow-black\/20 {
1258
+ --tw-shadow-color: color-mix(in srgb, #000 20%, transparent);
1259
+ @supports (color: color-mix(in lab, red, red)) {
1260
+ --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-black) 20%, transparent) var(--tw-shadow-alpha), transparent);
1261
+ }
1262
+ }
1210
1263
  .outline {
1211
1264
  outline-style: var(--tw-outline-style);
1212
1265
  outline-width: 1px;
@@ -1214,6 +1267,11 @@
1214
1267
  .filter {
1215
1268
  filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
1216
1269
  }
1270
+ .backdrop-blur-md {
1271
+ --tw-backdrop-blur: blur(var(--blur-md));
1272
+ -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
1273
+ backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
1274
+ }
1217
1275
  .backdrop-blur-sm {
1218
1276
  --tw-backdrop-blur: blur(var(--blur-sm));
1219
1277
  -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
@@ -1251,6 +1309,9 @@
1251
1309
  -webkit-user-select: none;
1252
1310
  user-select: none;
1253
1311
  }
1312
+ .\[playground\:openApp\] {
1313
+ playground: openApp;
1314
+ }
1254
1315
  .placeholder\:text-neutral-300::placeholder {
1255
1316
  color: var(--color-neutral-300);
1256
1317
  }
@@ -1499,6 +1560,51 @@
1499
1560
  .disabled\:opacity-50:disabled {
1500
1561
  opacity: 50%;
1501
1562
  }
1563
+ @media (prefers-color-scheme: dark) {
1564
+ .dark\:border-slate-700\/60 {
1565
+ border-color: color-mix(in srgb, oklch(37.2% 0.044 257.287) 60%, transparent);
1566
+ }
1567
+ @supports (color: color-mix(in lab, red, red)) {
1568
+ .dark\:border-slate-700\/60 {
1569
+ border-color: color-mix(in oklab, var(--color-slate-700) 60%, transparent);
1570
+ }
1571
+ }
1572
+ .dark\:border-white\/20 {
1573
+ border-color: color-mix(in srgb, #fff 20%, transparent);
1574
+ }
1575
+ @supports (color: color-mix(in lab, red, red)) {
1576
+ .dark\:border-white\/20 {
1577
+ border-color: color-mix(in oklab, var(--color-white) 20%, transparent);
1578
+ }
1579
+ }
1580
+ .dark\:bg-slate-900\/70 {
1581
+ background-color: color-mix(in srgb, oklch(20.8% 0.042 265.755) 70%, transparent);
1582
+ }
1583
+ @supports (color: color-mix(in lab, red, red)) {
1584
+ .dark\:bg-slate-900\/70 {
1585
+ background-color: color-mix(in oklab, var(--color-slate-900) 70%, transparent);
1586
+ }
1587
+ }
1588
+ .dark\:bg-slate-950\/70 {
1589
+ background-color: color-mix(in srgb, oklch(12.9% 0.042 264.695) 70%, transparent);
1590
+ }
1591
+ @supports (color: color-mix(in lab, red, red)) {
1592
+ .dark\:bg-slate-950\/70 {
1593
+ background-color: color-mix(in oklab, var(--color-slate-950) 70%, transparent);
1594
+ }
1595
+ }
1596
+ .dark\:text-slate-100 {
1597
+ color: var(--color-slate-100);
1598
+ }
1599
+ .dark\:shadow-slate-950\/40 {
1600
+ --tw-shadow-color: color-mix(in srgb, oklch(12.9% 0.042 264.695) 40%, transparent);
1601
+ }
1602
+ @supports (color: color-mix(in lab, red, red)) {
1603
+ .dark\:shadow-slate-950\/40 {
1604
+ --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-slate-950) 40%, transparent) var(--tw-shadow-alpha), transparent);
1605
+ }
1606
+ }
1607
+ }
1502
1608
  .\[\&_tr\]\:border-b tr {
1503
1609
  border-bottom-style: var(--tw-border-style);
1504
1610
  border-bottom-width: 1px;
package/dist/index.d.cts CHANGED
@@ -367,4 +367,4 @@ declare const TableHead: React.ForwardRefExoticComponent<React.ThHTMLAttributes<
367
367
  declare const TableCell: React.ForwardRefExoticComponent<React.TdHTMLAttributes<HTMLTableCellElement> & React.RefAttributes<HTMLTableCellElement>>;
368
368
  declare const TableCaption: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableCaptionElement> & React.RefAttributes<HTMLTableCaptionElement>>;
369
369
 
370
- export { Accordion, Alert, type AlertProps, Avatar, type AvatarProps, Badge, type BadgeProps, Button, type ButtonProps, Card, type CardProps, Checkbox, type CheckboxProps, Divider, Dropdown, type DropdownOption, type DropdownProps, FileUpload, type FileUploadProps, ImageWithPlaceholder, type ImageWithPlaceholderProps, Input, type InputProps, Loading, type LoadingProps, Modal, type ModalProps, Pagination, type PaginationProps, Progress, type ProgressProps, Radio, type RadioProps, SearchInput, type SearchInputProps, Select, type SelectOption, type SelectProps, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TextArea, type TextAreaProps, Toast, type ToastProps, Toggle, type ToggleProps, Tooltip, type TooltipProps, Typography, type TypographyProps, WindowWithSideMenu, WindowWithoutSideMenu };
370
+ export { Accordion, Alert, type AlertProps, type AppInterface, Avatar, type AvatarProps, Badge, type BadgeProps, Button, type ButtonProps, Card, type CardProps, Checkbox, type CheckboxProps, Divider, Dropdown, type DropdownOption, type DropdownProps, FileUpload, type FileUploadProps, ImageWithPlaceholder, type ImageWithPlaceholderProps, Input, type InputProps, Loading, type LoadingProps, Modal, type ModalProps, Pagination, type PaginationProps, Progress, type ProgressProps, Radio, type RadioProps, SearchInput, type SearchInputProps, Select, type SelectOption, type SelectProps, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TextArea, type TextAreaProps, Toast, type ToastProps, Toggle, type ToggleProps, Tooltip, type TooltipProps, Typography, type TypographyProps, WindowWithSideMenu, WindowWithoutSideMenu };
package/dist/index.d.ts CHANGED
@@ -367,4 +367,4 @@ declare const TableHead: React.ForwardRefExoticComponent<React.ThHTMLAttributes<
367
367
  declare const TableCell: React.ForwardRefExoticComponent<React.TdHTMLAttributes<HTMLTableCellElement> & React.RefAttributes<HTMLTableCellElement>>;
368
368
  declare const TableCaption: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableCaptionElement> & React.RefAttributes<HTMLTableCaptionElement>>;
369
369
 
370
- export { Accordion, Alert, type AlertProps, Avatar, type AvatarProps, Badge, type BadgeProps, Button, type ButtonProps, Card, type CardProps, Checkbox, type CheckboxProps, Divider, Dropdown, type DropdownOption, type DropdownProps, FileUpload, type FileUploadProps, ImageWithPlaceholder, type ImageWithPlaceholderProps, Input, type InputProps, Loading, type LoadingProps, Modal, type ModalProps, Pagination, type PaginationProps, Progress, type ProgressProps, Radio, type RadioProps, SearchInput, type SearchInputProps, Select, type SelectOption, type SelectProps, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TextArea, type TextAreaProps, Toast, type ToastProps, Toggle, type ToggleProps, Tooltip, type TooltipProps, Typography, type TypographyProps, WindowWithSideMenu, WindowWithoutSideMenu };
370
+ export { Accordion, Alert, type AlertProps, type AppInterface, Avatar, type AvatarProps, Badge, type BadgeProps, Button, type ButtonProps, Card, type CardProps, Checkbox, type CheckboxProps, Divider, Dropdown, type DropdownOption, type DropdownProps, FileUpload, type FileUploadProps, ImageWithPlaceholder, type ImageWithPlaceholderProps, Input, type InputProps, Loading, type LoadingProps, Modal, type ModalProps, Pagination, type PaginationProps, Progress, type ProgressProps, Radio, type RadioProps, SearchInput, type SearchInputProps, Select, type SelectOption, type SelectProps, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TextArea, type TextAreaProps, Toast, type ToastProps, Toggle, type ToggleProps, Tooltip, type TooltipProps, Typography, type TypographyProps, WindowWithSideMenu, WindowWithoutSideMenu };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ssovee-os-web-ui",
3
- "version": "0.1.25",
3
+ "version": "0.1.26",
4
4
  "description": "Reusable UI component library for shared applications.",
5
5
  "author": "SSOVEE",
6
6
  "license": "MIT",
@@ -8,7 +8,7 @@
8
8
  "type": "git",
9
9
  "url": "git+https://github.com/ssovee/ssovee-os-web-ui.git"
10
10
  },
11
- "homepage": "https://github.com/ssovee/ssovee-os-web-ui#readme",
11
+ "homepage": "https://ssovee.github.io/ssovee-os-web-ui",
12
12
  "keywords": [
13
13
  "react",
14
14
  "ui",