@rovula/ui 0.1.30 → 0.1.32
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/dist/cjs/bundle.css +8 -8
- package/dist/cjs/bundle.js +14 -9235
- package/dist/cjs/bundle.js.map +1 -1
- package/dist/cjs/types/components/Icon/Icon.stories.d.ts +4 -0
- package/dist/components/Icon/Icon.stories.js +21 -2
- package/dist/components/Navbar/Navbar.js +1 -1
- package/dist/esm/bundle.css +8 -8
- package/dist/esm/bundle.js +14 -9235
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/types/components/Icon/Icon.stories.d.ts +4 -0
- package/dist/src/theme/global.css +13 -13
- package/package.json +3 -3
- package/src/components/Icon/Icon.stories.tsx +77 -5
- package/src/components/Navbar/Navbar.tsx +8 -7
- package/src/theme/tokens/components/navbar.css +3 -3
|
@@ -510,6 +510,10 @@ export declare const LucideIconBrowser: {
|
|
|
510
510
|
args: {};
|
|
511
511
|
render: () => import("react/jsx-runtime").JSX.Element;
|
|
512
512
|
};
|
|
513
|
+
export declare const LucideIconAllBrowser: {
|
|
514
|
+
args: {};
|
|
515
|
+
render: () => import("react/jsx-runtime").JSX.Element;
|
|
516
|
+
};
|
|
513
517
|
export declare const PreviewMaterialIcon: {
|
|
514
518
|
args: {};
|
|
515
519
|
render: (args: {}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -2993,9 +2993,9 @@
|
|
|
2993
2993
|
--loading-track-color: var(--transparent-grey-32);
|
|
2994
2994
|
/* Navbar */
|
|
2995
2995
|
--navbar-height: 58px;
|
|
2996
|
-
--navbar-bg-color: var(--
|
|
2997
|
-
--navbar-text-color: var(--
|
|
2998
|
-
--navbar-border-color: var(--
|
|
2996
|
+
--navbar-bg-color: var(--bg-bg1);
|
|
2997
|
+
--navbar-text-color: var(--text-contrast-max);
|
|
2998
|
+
--navbar-border-color: var(--bg-stroke1);
|
|
2999
2999
|
--navbar-gap: 16px;
|
|
3000
3000
|
--navbar-shadow-scrolled: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
|
3001
3001
|
/* Footer */
|
|
@@ -5686,8 +5686,8 @@ input[type=number] {
|
|
|
5686
5686
|
border-color: rgb(255 255 255 / 0.2);
|
|
5687
5687
|
}
|
|
5688
5688
|
|
|
5689
|
-
.border-b-\[
|
|
5690
|
-
border-bottom-color:
|
|
5689
|
+
.border-b-\[var\(--navbar-border-color\)\] {
|
|
5690
|
+
border-bottom-color: var(--navbar-border-color);
|
|
5691
5691
|
}
|
|
5692
5692
|
|
|
5693
5693
|
.border-l-input-default-stroke {
|
|
@@ -5794,10 +5794,6 @@ input[type=number] {
|
|
|
5794
5794
|
background-color: rgb(var(--base-bg-2));
|
|
5795
5795
|
}
|
|
5796
5796
|
|
|
5797
|
-
.bg-\[rgb\(var\(--navbar-bg-color\)\)\] {
|
|
5798
|
-
background-color: rgb(var(--navbar-bg-color));
|
|
5799
|
-
}
|
|
5800
|
-
|
|
5801
5797
|
.bg-\[var\(--badge-default-bg\)\] {
|
|
5802
5798
|
background-color: var(--badge-default-bg);
|
|
5803
5799
|
}
|
|
@@ -5866,6 +5862,10 @@ input[type=number] {
|
|
|
5866
5862
|
background-color: var(--footer-bg-color);
|
|
5867
5863
|
}
|
|
5868
5864
|
|
|
5865
|
+
.bg-\[var\(--navbar-bg-color\)\] {
|
|
5866
|
+
background-color: var(--navbar-bg-color);
|
|
5867
|
+
}
|
|
5868
|
+
|
|
5869
5869
|
.bg-action-button-icon-active {
|
|
5870
5870
|
--tw-bg-opacity: 1;
|
|
5871
5871
|
background-color: color-mix(in srgb, var(--action-button-icon-active-bg) calc(100% * var(--tw-bg-opacity, 1)), transparent);
|
|
@@ -8346,10 +8346,6 @@ input[type=number] {
|
|
|
8346
8346
|
color: color-mix(in srgb, var(--state-primary-text-solid) calc(100% * var(--tw-text-opacity, 1)), transparent) !important;
|
|
8347
8347
|
}
|
|
8348
8348
|
|
|
8349
|
-
.text-\[rgb\(var\(--navbar-text-color\)\)\] {
|
|
8350
|
-
color: rgb(var(--navbar-text-color));
|
|
8351
|
-
}
|
|
8352
|
-
|
|
8353
8349
|
.text-\[var\(--badge-default-text\)\] {
|
|
8354
8350
|
color: var(--badge-default-text);
|
|
8355
8351
|
}
|
|
@@ -8410,6 +8406,10 @@ input[type=number] {
|
|
|
8410
8406
|
color: var(--loading-track-color);
|
|
8411
8407
|
}
|
|
8412
8408
|
|
|
8409
|
+
.text-\[var\(--navbar-text-color\)\] {
|
|
8410
|
+
color: var(--navbar-text-color);
|
|
8411
|
+
}
|
|
8412
|
+
|
|
8413
8413
|
.text-action-button-icon-active {
|
|
8414
8414
|
--tw-text-opacity: 1;
|
|
8415
8415
|
color: color-mix(in srgb, var(--action-button-icon-active-text) calc(100% * var(--tw-text-opacity, 1)), transparent);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rovula/ui",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.32",
|
|
4
4
|
"main": "dist/cjs/bundle.js",
|
|
5
5
|
"module": "dist/esm/bundle.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -63,10 +63,10 @@
|
|
|
63
63
|
"@vitejs/plugin-react": "^4.3.4",
|
|
64
64
|
"autoprefixer": "^10.4.19",
|
|
65
65
|
"babel-loader": "^9.1.3",
|
|
66
|
-
"jsdom": "^26.0.0",
|
|
67
66
|
"chromatic": "^11.7.1",
|
|
68
67
|
"copyfiles": "^2.4.1",
|
|
69
68
|
"css-loader": "^7.1.2",
|
|
69
|
+
"jsdom": "^26.0.0",
|
|
70
70
|
"postcss": "^8.4.38",
|
|
71
71
|
"rollup": "^4.18.0",
|
|
72
72
|
"rollup-plugin-dts": "^6.1.1",
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
"class-variance-authority": "^0.7.0",
|
|
112
112
|
"clsx": "^2.1.1",
|
|
113
113
|
"date-fns": "^3.6.0",
|
|
114
|
-
"lucide-react": "^
|
|
114
|
+
"lucide-react": "^1.7.0",
|
|
115
115
|
"react": "^17.0.0 || ^18.0.0",
|
|
116
116
|
"react-day-picker": "^9.0.7",
|
|
117
117
|
"react-dom": "^17.0.0 || ^18.0.0",
|
|
@@ -390,13 +390,40 @@ export const PreviewLucideIcon = {
|
|
|
390
390
|
<div className="flex flex-col justify-start gap-4 w-full h-full">
|
|
391
391
|
<h4>Lucide icons (designer set)</h4>
|
|
392
392
|
<p className="text-sm text-gray-500">
|
|
393
|
-
Names from
|
|
393
|
+
Names from{" "}
|
|
394
|
+
<a
|
|
395
|
+
href="https://lucide.dev/icons"
|
|
396
|
+
target="_blank"
|
|
397
|
+
rel="noreferrer"
|
|
398
|
+
className="underline"
|
|
399
|
+
>
|
|
400
|
+
lucide.dev/icons
|
|
401
|
+
</a>
|
|
402
|
+
. Use <code>getLucideIconNames()</code> for full list.
|
|
394
403
|
</p>
|
|
395
404
|
{LUCIDE_DESIGNER_ICONS.map((iconName) => (
|
|
396
405
|
<div key={iconName} className="flex flex-row gap-6 items-center">
|
|
397
|
-
<Icon
|
|
398
|
-
|
|
399
|
-
|
|
406
|
+
<Icon
|
|
407
|
+
{...args}
|
|
408
|
+
type="lucide"
|
|
409
|
+
name={iconName}
|
|
410
|
+
variant="outline"
|
|
411
|
+
size="sm"
|
|
412
|
+
/>
|
|
413
|
+
<Icon
|
|
414
|
+
{...args}
|
|
415
|
+
type="lucide"
|
|
416
|
+
name={iconName}
|
|
417
|
+
variant="outline"
|
|
418
|
+
size="md"
|
|
419
|
+
/>
|
|
420
|
+
<Icon
|
|
421
|
+
{...args}
|
|
422
|
+
type="lucide"
|
|
423
|
+
name={iconName}
|
|
424
|
+
variant="outline"
|
|
425
|
+
size="lg"
|
|
426
|
+
/>
|
|
400
427
|
<p className="ml-4 font-mono text-sm">{iconName}</p>
|
|
401
428
|
</div>
|
|
402
429
|
))}
|
|
@@ -421,8 +448,12 @@ export const LucideIconBrowser = {
|
|
|
421
448
|
});
|
|
422
449
|
}, []);
|
|
423
450
|
|
|
451
|
+
console.log(names);
|
|
452
|
+
|
|
424
453
|
const filtered = filter
|
|
425
|
-
? names
|
|
454
|
+
? names
|
|
455
|
+
.filter((n) => n.toLowerCase().includes(filter.toLowerCase()))
|
|
456
|
+
.slice(0, 80)
|
|
426
457
|
: names.slice(0, 50);
|
|
427
458
|
|
|
428
459
|
return (
|
|
@@ -457,6 +488,47 @@ export const LucideIconBrowser = {
|
|
|
457
488
|
},
|
|
458
489
|
} satisfies StoryObj;
|
|
459
490
|
|
|
491
|
+
export const LucideIconAllBrowser = {
|
|
492
|
+
args: {},
|
|
493
|
+
render: () => {
|
|
494
|
+
const [names, setNames] = React.useState<string[]>([]);
|
|
495
|
+
const [loading, setLoading] = React.useState(true);
|
|
496
|
+
|
|
497
|
+
React.useEffect(() => {
|
|
498
|
+
import("@/icons").then(({ getLucideIconNames }) => {
|
|
499
|
+
getLucideIconNames().then((n) => {
|
|
500
|
+
setNames(n.sort());
|
|
501
|
+
setLoading(false);
|
|
502
|
+
});
|
|
503
|
+
});
|
|
504
|
+
}, []);
|
|
505
|
+
|
|
506
|
+
return (
|
|
507
|
+
<div className="flex flex-col gap-4 p-4 max-h-[80vh] overflow-auto w-full h-full">
|
|
508
|
+
<h4>Lucide icon names ({names.length} total)</h4>
|
|
509
|
+
|
|
510
|
+
{loading ? (
|
|
511
|
+
<p>Loading...</p>
|
|
512
|
+
) : (
|
|
513
|
+
<div className="grid grid-cols-[repeat(auto-fill,minmax(140px,1fr))] gap-2">
|
|
514
|
+
{names.map((name) => (
|
|
515
|
+
<div
|
|
516
|
+
key={name}
|
|
517
|
+
className="flex flex-col items-center gap-1 p-2 border rounded hover:bg-gray-50"
|
|
518
|
+
>
|
|
519
|
+
<Icon type="lucide" name={name} size="md" />
|
|
520
|
+
<span className="font-mono text-xs truncate w-full text-center">
|
|
521
|
+
{name}
|
|
522
|
+
</span>
|
|
523
|
+
</div>
|
|
524
|
+
))}
|
|
525
|
+
</div>
|
|
526
|
+
)}
|
|
527
|
+
</div>
|
|
528
|
+
);
|
|
529
|
+
},
|
|
530
|
+
} satisfies StoryObj;
|
|
531
|
+
|
|
460
532
|
export const PreviewMaterialIcon = {
|
|
461
533
|
args: {
|
|
462
534
|
// variant: "outline",
|
|
@@ -57,16 +57,17 @@ const Navbar: FC<NavbarProps> = ({
|
|
|
57
57
|
return (
|
|
58
58
|
<header
|
|
59
59
|
className={cn(
|
|
60
|
-
"relative w-full px-4 py-6 h-[var(--navbar-height)] box-border overflow-hidden typography-subtitle2 border-solid border-b-2
|
|
60
|
+
"relative w-full px-4 py-6 h-[var(--navbar-height)] box-border overflow-hidden typography-subtitle2 border-solid border-b-2 border-b-[var(--navbar-border-color)] transition-shadow duration-200",
|
|
61
|
+
isTransparent ? "text-inherit" : "text-[var(--navbar-text-color)]",
|
|
61
62
|
{ position },
|
|
62
63
|
scrollShadow && isScrolled && "shadow-[var(--navbar-shadow-scrolled)]",
|
|
63
|
-
className
|
|
64
|
+
className,
|
|
64
65
|
)}
|
|
65
66
|
>
|
|
66
67
|
{/* Default bg (z:-10) + overlay for className override - hidden when transparent */}
|
|
67
68
|
{!isTransparent && (
|
|
68
69
|
<div
|
|
69
|
-
className="absolute inset-0 -z-10 bg-[
|
|
70
|
+
className="absolute inset-0 -z-10 bg-[var(--navbar-bg-color)]"
|
|
70
71
|
aria-hidden
|
|
71
72
|
/>
|
|
72
73
|
)}
|
|
@@ -80,7 +81,7 @@ const Navbar: FC<NavbarProps> = ({
|
|
|
80
81
|
{
|
|
81
82
|
container,
|
|
82
83
|
},
|
|
83
|
-
containerClassName
|
|
84
|
+
containerClassName,
|
|
84
85
|
)}
|
|
85
86
|
>
|
|
86
87
|
{children || (
|
|
@@ -88,7 +89,7 @@ const Navbar: FC<NavbarProps> = ({
|
|
|
88
89
|
<nav
|
|
89
90
|
className={cn(
|
|
90
91
|
"flex w-1/2 gap-x-[var(--navbar-gap)] text-xl",
|
|
91
|
-
leftNavClassName
|
|
92
|
+
leftNavClassName,
|
|
92
93
|
)}
|
|
93
94
|
>
|
|
94
95
|
{leftNav}
|
|
@@ -97,7 +98,7 @@ const Navbar: FC<NavbarProps> = ({
|
|
|
97
98
|
<div
|
|
98
99
|
className={cn(
|
|
99
100
|
"flex flex-shrink-0 flex-wrap justify-center",
|
|
100
|
-
centerClassName
|
|
101
|
+
centerClassName,
|
|
101
102
|
)}
|
|
102
103
|
>
|
|
103
104
|
{center}
|
|
@@ -106,7 +107,7 @@ const Navbar: FC<NavbarProps> = ({
|
|
|
106
107
|
<nav
|
|
107
108
|
className={cn(
|
|
108
109
|
"flex w-1/2 justify-end gap-x-[var(--navbar-gap)] text-xl",
|
|
109
|
-
rightNavClassName
|
|
110
|
+
rightNavClassName,
|
|
110
111
|
)}
|
|
111
112
|
>
|
|
112
113
|
{rightNav}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
:root {
|
|
2
2
|
/* Navbar */
|
|
3
3
|
--navbar-height: 58px;
|
|
4
|
-
--navbar-bg-color: var(--
|
|
5
|
-
--navbar-text-color: var(--
|
|
6
|
-
--navbar-border-color: var(--
|
|
4
|
+
--navbar-bg-color: var(--bg-bg1);
|
|
5
|
+
--navbar-text-color: var(--text-contrast-max);
|
|
6
|
+
--navbar-border-color: var(--bg-stroke1);
|
|
7
7
|
--navbar-gap: 16px;
|
|
8
8
|
--navbar-shadow-scrolled: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
|
9
9
|
}
|