@borisj74/bv-ds 0.1.4 → 0.1.5
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/index.cjs +16 -23
- package/dist/index.js +16 -23
- package/package.json +3 -2
- package/src/components/NavAccountCard/NavAccountCard.tsx +12 -18
- package/src/components/NavItemBase/NavItemBase.tsx +4 -7
- package/src/components/NavItemDropdownBase/NavItemDropdownBase.tsx +6 -7
- package/src/components/NavMenuButton/NavMenuButton.tsx +18 -12
- package/src/types/bv-ds-icons.d.ts +6 -0
package/dist/index.cjs
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var React28 = require('react');
|
|
4
4
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
var bvDsIcons = require('@borisj74/bv-ds-icons');
|
|
5
6
|
|
|
6
7
|
function _interopNamespace(e) {
|
|
7
8
|
if (e && e.__esModule) return e;
|
|
@@ -31956,17 +31957,7 @@ function MultiSelect({
|
|
|
31956
31957
|
hint && /* @__PURE__ */ jsxRuntime.jsx("span", { className: clsx_default("text-sm", invalid ? "text-text-error-primary" : "text-text-tertiary"), children: hint })
|
|
31957
31958
|
] });
|
|
31958
31959
|
}
|
|
31959
|
-
var
|
|
31960
|
-
var LogOut = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 16 16", fill: "none", className: "size-4", "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
31961
|
-
"path",
|
|
31962
|
-
{
|
|
31963
|
-
d: "M10.67 11.33 14 8m0 0-3.33-3.33M14 8H6M6 2H4.67c-.93 0-1.4 0-1.76.18-.31.16-.57.42-.73.73C2 3.27 2 3.73 2 4.67v6.66c0 .94 0 1.4.18 1.76.16.31.42.57.73.73.36.18.83.18 1.76.18H6",
|
|
31964
|
-
stroke: "currentColor",
|
|
31965
|
-
strokeWidth: "1.33",
|
|
31966
|
-
strokeLinecap: "round",
|
|
31967
|
-
strokeLinejoin: "round"
|
|
31968
|
-
}
|
|
31969
|
-
) });
|
|
31960
|
+
var IconBox16 = ({ children }) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "overflow-clip relative shrink-0 size-[16px] flex items-center justify-center", children });
|
|
31970
31961
|
var LayeredAvatar = ({ src, online }) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative inline-flex size-10 shrink-0 rounded-full border-[0.75px] border-border-secondary-alt bg-bg-primary p-[1px] shadow-xs", children: [
|
|
31971
31962
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex size-full overflow-hidden rounded-full border-[0.5px] border-[rgba(0,0,0,0.16)]", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src, alt: "", className: "size-full rounded-full object-cover" }) }),
|
|
31972
31963
|
online !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -32022,7 +32013,7 @@ function NavAccountCard({
|
|
|
32022
32013
|
onClick: onSignOut,
|
|
32023
32014
|
"aria-label": "Sign out",
|
|
32024
32015
|
className: "absolute right-0 top-[15px] flex items-center justify-center rounded-sm p-sm text-fg-quaternary transition-colors hover:text-fg-quaternary-hover",
|
|
32025
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
32016
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(IconBox16, { children: /* @__PURE__ */ jsxRuntime.jsx(bvDsIcons.LogOut01, { className: "w-full h-full" }) })
|
|
32026
32017
|
}
|
|
32027
32018
|
)
|
|
32028
32019
|
]
|
|
@@ -32045,7 +32036,7 @@ function NavAccountCard({
|
|
|
32045
32036
|
"absolute right-[7px] top-[7px] flex items-center justify-center rounded-sm p-sm text-fg-quaternary",
|
|
32046
32037
|
open && "bg-bg-primary-hover"
|
|
32047
32038
|
),
|
|
32048
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
32039
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(IconBox16, { children: /* @__PURE__ */ jsxRuntime.jsx(bvDsIcons.ChevronSelectorVertical, { className: "w-full h-full" }) })
|
|
32049
32040
|
}
|
|
32050
32041
|
)
|
|
32051
32042
|
]
|
|
@@ -32186,7 +32177,6 @@ function NavFeaturedCard({
|
|
|
32186
32177
|
}
|
|
32187
32178
|
);
|
|
32188
32179
|
}
|
|
32189
|
-
var ChevronDown2 = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 16 16", fill: "none", className: "size-4", "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 6l4 4 4-4", stroke: "currentColor", strokeWidth: "1.33", strokeLinecap: "round", strokeLinejoin: "round" }) });
|
|
32190
32180
|
function NavItemBase({
|
|
32191
32181
|
current = false,
|
|
32192
32182
|
icon,
|
|
@@ -32221,14 +32211,13 @@ function NavItemBase({
|
|
|
32221
32211
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate text-left text-sm font-semibold text-text-secondary", children: label })
|
|
32222
32212
|
] }),
|
|
32223
32213
|
badge != null && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 rounded-full border border-utility-neutral-200 bg-utility-neutral-50 px-md py-xxs text-xs font-medium text-utility-neutral-700", children: badge }),
|
|
32224
|
-
trailingChevron && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-fg-quaternary", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
32214
|
+
trailingChevron && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-fg-quaternary", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "overflow-clip relative shrink-0 size-[16px] flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(bvDsIcons.ChevronDown, { className: "w-full h-full" }) }) })
|
|
32225
32215
|
]
|
|
32226
32216
|
}
|
|
32227
32217
|
)
|
|
32228
32218
|
}
|
|
32229
32219
|
);
|
|
32230
32220
|
}
|
|
32231
|
-
var Chevron5 = ({ up }) => /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 16 16", fill: "none", className: "size-4", "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: up ? "M4 10l4-4 4 4" : "M4 6l4 4 4-4", stroke: "currentColor", strokeWidth: "1.33", strokeLinecap: "round", strokeLinejoin: "round" }) });
|
|
32232
32221
|
function NavItemDropdownBase({
|
|
32233
32222
|
current = false,
|
|
32234
32223
|
open = false,
|
|
@@ -32260,7 +32249,12 @@ function NavItemDropdownBase({
|
|
|
32260
32249
|
icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex size-5 shrink-0 items-center justify-center text-fg-quaternary [&>svg]:size-5", children: icon }),
|
|
32261
32250
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate text-left text-sm font-semibold text-text-secondary", children: label })
|
|
32262
32251
|
] }),
|
|
32263
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-fg-quaternary", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
32252
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-fg-quaternary", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "overflow-clip relative shrink-0 size-[16px] flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
32253
|
+
bvDsIcons.ChevronDown,
|
|
32254
|
+
{
|
|
32255
|
+
className: clsx_default("w-full h-full transition-transform", open && "rotate-180")
|
|
32256
|
+
}
|
|
32257
|
+
) }) })
|
|
32264
32258
|
]
|
|
32265
32259
|
}
|
|
32266
32260
|
)
|
|
@@ -32269,8 +32263,7 @@ function NavItemDropdownBase({
|
|
|
32269
32263
|
open && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col pb-xs", children })
|
|
32270
32264
|
] });
|
|
32271
32265
|
}
|
|
32272
|
-
var
|
|
32273
|
-
var XClose4 = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 20 20", fill: "none", className: "size-5", "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M15 5 5 15M5 5l10 10", stroke: "currentColor", strokeWidth: "1.67", strokeLinecap: "round", strokeLinejoin: "round" }) });
|
|
32266
|
+
var IconBox = ({ children }) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "overflow-clip relative shrink-0 size-[20px] flex items-center justify-center", children });
|
|
32274
32267
|
function NavMenuButton({
|
|
32275
32268
|
opened = false,
|
|
32276
32269
|
className,
|
|
@@ -32289,7 +32282,7 @@ function NavMenuButton({
|
|
|
32289
32282
|
className
|
|
32290
32283
|
),
|
|
32291
32284
|
...rest,
|
|
32292
|
-
children: opened ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "opacity-70", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
32285
|
+
children: opened ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "opacity-70", children: /* @__PURE__ */ jsxRuntime.jsx(IconBox, { children: /* @__PURE__ */ jsxRuntime.jsx(bvDsIcons.XClose, { className: "w-full h-full" }) }) }) : /* @__PURE__ */ jsxRuntime.jsx(IconBox, { children: /* @__PURE__ */ jsxRuntime.jsx(bvDsIcons.Menu02, { className: "w-full h-full" }) })
|
|
32293
32286
|
}
|
|
32294
32287
|
);
|
|
32295
32288
|
}
|
|
@@ -32377,7 +32370,7 @@ function NumberInput({
|
|
|
32377
32370
|
const inc = () => set2(value + step);
|
|
32378
32371
|
const Minus = /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 20 20", fill: "none", className: "size-5", "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4.167 10h11.666", stroke: "currentColor", strokeWidth: "1.67", strokeLinecap: "round" }) });
|
|
32379
32372
|
const Plus = /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 20 20", fill: "none", className: "size-5", "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M10 4.167v11.666M4.167 10h11.666", stroke: "currentColor", strokeWidth: "1.67", strokeLinecap: "round" }) });
|
|
32380
|
-
const
|
|
32373
|
+
const Chevron5 = ({ up }) => /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 12 12", fill: "none", className: clsx_default("size-3", up && "rotate-180"), "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M3 4.5 6 7.5 9 4.5", stroke: "currentColor", strokeWidth: "1.2", strokeLinecap: "round", strokeLinejoin: "round" }) });
|
|
32381
32374
|
const numberEl = /* @__PURE__ */ jsxRuntime.jsx(
|
|
32382
32375
|
"input",
|
|
32383
32376
|
{
|
|
@@ -32403,9 +32396,9 @@ function NumberInput({
|
|
|
32403
32396
|
] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx_default(boxClasses(destructive), "gap-0 overflow-hidden p-0"), children: [
|
|
32404
32397
|
numberEl,
|
|
32405
32398
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col self-stretch border-l border-border-primary", children: [
|
|
32406
|
-
/* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: inc, disabled, "aria-label": "Increase", className: "flex flex-1 items-center justify-center px-md text-fg-quaternary hover:bg-bg-primary-hover disabled:opacity-60", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
32399
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: inc, disabled, "aria-label": "Increase", className: "flex flex-1 items-center justify-center px-md text-fg-quaternary hover:bg-bg-primary-hover disabled:opacity-60", children: /* @__PURE__ */ jsxRuntime.jsx(Chevron5, { up: true }) }),
|
|
32407
32400
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "h-px w-full bg-border-primary" }),
|
|
32408
|
-
/* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: dec, disabled, "aria-label": "Decrease", className: "flex flex-1 items-center justify-center px-md text-fg-quaternary hover:bg-bg-primary-hover disabled:opacity-60", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
32401
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: dec, disabled, "aria-label": "Decrease", className: "flex flex-1 items-center justify-center px-md text-fg-quaternary hover:bg-bg-primary-hover disabled:opacity-60", children: /* @__PURE__ */ jsxRuntime.jsx(Chevron5, { up: false }) })
|
|
32409
32402
|
] })
|
|
32410
32403
|
] });
|
|
32411
32404
|
return /* @__PURE__ */ jsxRuntime.jsx(FieldWrapper, { label, required, hint, destructive, className, children: box });
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as React28 from 'react';
|
|
2
2
|
import React28__default, { forwardRef, isValidElement, cloneElement, Children, useContext, useMemo, createContext, Fragment, useState, PureComponent, createElement, Component, useRef, useEffect, useCallback, useId, useImperativeHandle } from 'react';
|
|
3
3
|
import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
|
|
4
|
+
import { LogOut01, ChevronSelectorVertical, ChevronDown as ChevronDown$1, XClose as XClose$1, Menu02 } from '@borisj74/bv-ds-icons';
|
|
4
5
|
|
|
5
6
|
var __create = Object.create;
|
|
6
7
|
var __defProp = Object.defineProperty;
|
|
@@ -31935,17 +31936,7 @@ function MultiSelect({
|
|
|
31935
31936
|
hint && /* @__PURE__ */ jsx("span", { className: clsx_default("text-sm", invalid ? "text-text-error-primary" : "text-text-tertiary"), children: hint })
|
|
31936
31937
|
] });
|
|
31937
31938
|
}
|
|
31938
|
-
var
|
|
31939
|
-
var LogOut = () => /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", fill: "none", className: "size-4", "aria-hidden": true, children: /* @__PURE__ */ jsx(
|
|
31940
|
-
"path",
|
|
31941
|
-
{
|
|
31942
|
-
d: "M10.67 11.33 14 8m0 0-3.33-3.33M14 8H6M6 2H4.67c-.93 0-1.4 0-1.76.18-.31.16-.57.42-.73.73C2 3.27 2 3.73 2 4.67v6.66c0 .94 0 1.4.18 1.76.16.31.42.57.73.73.36.18.83.18 1.76.18H6",
|
|
31943
|
-
stroke: "currentColor",
|
|
31944
|
-
strokeWidth: "1.33",
|
|
31945
|
-
strokeLinecap: "round",
|
|
31946
|
-
strokeLinejoin: "round"
|
|
31947
|
-
}
|
|
31948
|
-
) });
|
|
31939
|
+
var IconBox16 = ({ children }) => /* @__PURE__ */ jsx("span", { className: "overflow-clip relative shrink-0 size-[16px] flex items-center justify-center", children });
|
|
31949
31940
|
var LayeredAvatar = ({ src, online }) => /* @__PURE__ */ jsxs("span", { className: "relative inline-flex size-10 shrink-0 rounded-full border-[0.75px] border-border-secondary-alt bg-bg-primary p-[1px] shadow-xs", children: [
|
|
31950
31941
|
/* @__PURE__ */ jsx("span", { className: "flex size-full overflow-hidden rounded-full border-[0.5px] border-[rgba(0,0,0,0.16)]", children: /* @__PURE__ */ jsx("img", { src, alt: "", className: "size-full rounded-full object-cover" }) }),
|
|
31951
31942
|
online !== void 0 && /* @__PURE__ */ jsx(
|
|
@@ -32001,7 +31992,7 @@ function NavAccountCard({
|
|
|
32001
31992
|
onClick: onSignOut,
|
|
32002
31993
|
"aria-label": "Sign out",
|
|
32003
31994
|
className: "absolute right-0 top-[15px] flex items-center justify-center rounded-sm p-sm text-fg-quaternary transition-colors hover:text-fg-quaternary-hover",
|
|
32004
|
-
children: /* @__PURE__ */ jsx(
|
|
31995
|
+
children: /* @__PURE__ */ jsx(IconBox16, { children: /* @__PURE__ */ jsx(LogOut01, { className: "w-full h-full" }) })
|
|
32005
31996
|
}
|
|
32006
31997
|
)
|
|
32007
31998
|
]
|
|
@@ -32024,7 +32015,7 @@ function NavAccountCard({
|
|
|
32024
32015
|
"absolute right-[7px] top-[7px] flex items-center justify-center rounded-sm p-sm text-fg-quaternary",
|
|
32025
32016
|
open && "bg-bg-primary-hover"
|
|
32026
32017
|
),
|
|
32027
|
-
children: /* @__PURE__ */ jsx(
|
|
32018
|
+
children: /* @__PURE__ */ jsx(IconBox16, { children: /* @__PURE__ */ jsx(ChevronSelectorVertical, { className: "w-full h-full" }) })
|
|
32028
32019
|
}
|
|
32029
32020
|
)
|
|
32030
32021
|
]
|
|
@@ -32165,7 +32156,6 @@ function NavFeaturedCard({
|
|
|
32165
32156
|
}
|
|
32166
32157
|
);
|
|
32167
32158
|
}
|
|
32168
|
-
var ChevronDown2 = () => /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", fill: "none", className: "size-4", "aria-hidden": true, children: /* @__PURE__ */ jsx("path", { d: "M4 6l4 4 4-4", stroke: "currentColor", strokeWidth: "1.33", strokeLinecap: "round", strokeLinejoin: "round" }) });
|
|
32169
32159
|
function NavItemBase({
|
|
32170
32160
|
current = false,
|
|
32171
32161
|
icon,
|
|
@@ -32200,14 +32190,13 @@ function NavItemBase({
|
|
|
32200
32190
|
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate text-left text-sm font-semibold text-text-secondary", children: label })
|
|
32201
32191
|
] }),
|
|
32202
32192
|
badge != null && /* @__PURE__ */ jsx("span", { className: "shrink-0 rounded-full border border-utility-neutral-200 bg-utility-neutral-50 px-md py-xxs text-xs font-medium text-utility-neutral-700", children: badge }),
|
|
32203
|
-
trailingChevron && /* @__PURE__ */ jsx("span", { className: "shrink-0 text-fg-quaternary", children: /* @__PURE__ */ jsx(
|
|
32193
|
+
trailingChevron && /* @__PURE__ */ jsx("span", { className: "shrink-0 text-fg-quaternary", children: /* @__PURE__ */ jsx("span", { className: "overflow-clip relative shrink-0 size-[16px] flex items-center justify-center", children: /* @__PURE__ */ jsx(ChevronDown$1, { className: "w-full h-full" }) }) })
|
|
32204
32194
|
]
|
|
32205
32195
|
}
|
|
32206
32196
|
)
|
|
32207
32197
|
}
|
|
32208
32198
|
);
|
|
32209
32199
|
}
|
|
32210
|
-
var Chevron5 = ({ up }) => /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", fill: "none", className: "size-4", "aria-hidden": true, children: /* @__PURE__ */ jsx("path", { d: up ? "M4 10l4-4 4 4" : "M4 6l4 4 4-4", stroke: "currentColor", strokeWidth: "1.33", strokeLinecap: "round", strokeLinejoin: "round" }) });
|
|
32211
32200
|
function NavItemDropdownBase({
|
|
32212
32201
|
current = false,
|
|
32213
32202
|
open = false,
|
|
@@ -32239,7 +32228,12 @@ function NavItemDropdownBase({
|
|
|
32239
32228
|
icon && /* @__PURE__ */ jsx("span", { className: "flex size-5 shrink-0 items-center justify-center text-fg-quaternary [&>svg]:size-5", children: icon }),
|
|
32240
32229
|
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate text-left text-sm font-semibold text-text-secondary", children: label })
|
|
32241
32230
|
] }),
|
|
32242
|
-
/* @__PURE__ */ jsx("span", { className: "shrink-0 text-fg-quaternary", children: /* @__PURE__ */ jsx(
|
|
32231
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0 text-fg-quaternary", children: /* @__PURE__ */ jsx("span", { className: "overflow-clip relative shrink-0 size-[16px] flex items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
32232
|
+
ChevronDown$1,
|
|
32233
|
+
{
|
|
32234
|
+
className: clsx_default("w-full h-full transition-transform", open && "rotate-180")
|
|
32235
|
+
}
|
|
32236
|
+
) }) })
|
|
32243
32237
|
]
|
|
32244
32238
|
}
|
|
32245
32239
|
)
|
|
@@ -32248,8 +32242,7 @@ function NavItemDropdownBase({
|
|
|
32248
32242
|
open && /* @__PURE__ */ jsx("div", { className: "flex flex-col pb-xs", children })
|
|
32249
32243
|
] });
|
|
32250
32244
|
}
|
|
32251
|
-
var
|
|
32252
|
-
var XClose4 = () => /* @__PURE__ */ jsx("svg", { viewBox: "0 0 20 20", fill: "none", className: "size-5", "aria-hidden": true, children: /* @__PURE__ */ jsx("path", { d: "M15 5 5 15M5 5l10 10", stroke: "currentColor", strokeWidth: "1.67", strokeLinecap: "round", strokeLinejoin: "round" }) });
|
|
32245
|
+
var IconBox = ({ children }) => /* @__PURE__ */ jsx("span", { className: "overflow-clip relative shrink-0 size-[20px] flex items-center justify-center", children });
|
|
32253
32246
|
function NavMenuButton({
|
|
32254
32247
|
opened = false,
|
|
32255
32248
|
className,
|
|
@@ -32268,7 +32261,7 @@ function NavMenuButton({
|
|
|
32268
32261
|
className
|
|
32269
32262
|
),
|
|
32270
32263
|
...rest,
|
|
32271
|
-
children: opened ? /* @__PURE__ */ jsx("span", { className: "opacity-70", children: /* @__PURE__ */ jsx(
|
|
32264
|
+
children: opened ? /* @__PURE__ */ jsx("span", { className: "opacity-70", children: /* @__PURE__ */ jsx(IconBox, { children: /* @__PURE__ */ jsx(XClose$1, { className: "w-full h-full" }) }) }) : /* @__PURE__ */ jsx(IconBox, { children: /* @__PURE__ */ jsx(Menu02, { className: "w-full h-full" }) })
|
|
32272
32265
|
}
|
|
32273
32266
|
);
|
|
32274
32267
|
}
|
|
@@ -32356,7 +32349,7 @@ function NumberInput({
|
|
|
32356
32349
|
const inc = () => set2(value + step);
|
|
32357
32350
|
const Minus = /* @__PURE__ */ jsx("svg", { viewBox: "0 0 20 20", fill: "none", className: "size-5", "aria-hidden": true, children: /* @__PURE__ */ jsx("path", { d: "M4.167 10h11.666", stroke: "currentColor", strokeWidth: "1.67", strokeLinecap: "round" }) });
|
|
32358
32351
|
const Plus = /* @__PURE__ */ jsx("svg", { viewBox: "0 0 20 20", fill: "none", className: "size-5", "aria-hidden": true, children: /* @__PURE__ */ jsx("path", { d: "M10 4.167v11.666M4.167 10h11.666", stroke: "currentColor", strokeWidth: "1.67", strokeLinecap: "round" }) });
|
|
32359
|
-
const
|
|
32352
|
+
const Chevron5 = ({ up }) => /* @__PURE__ */ jsx("svg", { viewBox: "0 0 12 12", fill: "none", className: clsx_default("size-3", up && "rotate-180"), "aria-hidden": true, children: /* @__PURE__ */ jsx("path", { d: "M3 4.5 6 7.5 9 4.5", stroke: "currentColor", strokeWidth: "1.2", strokeLinecap: "round", strokeLinejoin: "round" }) });
|
|
32360
32353
|
const numberEl = /* @__PURE__ */ jsx(
|
|
32361
32354
|
"input",
|
|
32362
32355
|
{
|
|
@@ -32382,9 +32375,9 @@ function NumberInput({
|
|
|
32382
32375
|
] }) : /* @__PURE__ */ jsxs("div", { className: clsx_default(boxClasses(destructive), "gap-0 overflow-hidden p-0"), children: [
|
|
32383
32376
|
numberEl,
|
|
32384
32377
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-col self-stretch border-l border-border-primary", children: [
|
|
32385
|
-
/* @__PURE__ */ jsx("button", { type: "button", onClick: inc, disabled, "aria-label": "Increase", className: "flex flex-1 items-center justify-center px-md text-fg-quaternary hover:bg-bg-primary-hover disabled:opacity-60", children: /* @__PURE__ */ jsx(
|
|
32378
|
+
/* @__PURE__ */ jsx("button", { type: "button", onClick: inc, disabled, "aria-label": "Increase", className: "flex flex-1 items-center justify-center px-md text-fg-quaternary hover:bg-bg-primary-hover disabled:opacity-60", children: /* @__PURE__ */ jsx(Chevron5, { up: true }) }),
|
|
32386
32379
|
/* @__PURE__ */ jsx("span", { className: "h-px w-full bg-border-primary" }),
|
|
32387
|
-
/* @__PURE__ */ jsx("button", { type: "button", onClick: dec, disabled, "aria-label": "Decrease", className: "flex flex-1 items-center justify-center px-md text-fg-quaternary hover:bg-bg-primary-hover disabled:opacity-60", children: /* @__PURE__ */ jsx(
|
|
32380
|
+
/* @__PURE__ */ jsx("button", { type: "button", onClick: dec, disabled, "aria-label": "Decrease", className: "flex flex-1 items-center justify-center px-md text-fg-quaternary hover:bg-bg-primary-hover disabled:opacity-60", children: /* @__PURE__ */ jsx(Chevron5, { up: false }) })
|
|
32388
32381
|
] })
|
|
32389
32382
|
] });
|
|
32390
32383
|
return /* @__PURE__ */ jsx(FieldWrapper, { label, required, hint, destructive, className, children: box });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@borisj74/bv-ds",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "bv-ds — React component library synced from Figma (Untitled UI v8.0), built on Tailwind CSS",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -35,7 +35,8 @@
|
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
37
|
"react": ">=18.0.0",
|
|
38
|
-
"react-dom": ">=18.0.0"
|
|
38
|
+
"react-dom": ">=18.0.0",
|
|
39
|
+
"@borisj74/bv-ds-icons": ">=0.1.0"
|
|
39
40
|
},
|
|
40
41
|
"devDependencies": {
|
|
41
42
|
"@borisj74/bv-ds-icons": "^0.1.0",
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type HTMLAttributes, type ReactNode } from "react";
|
|
2
2
|
import clsx from "clsx";
|
|
3
|
+
import { ChevronSelectorVertical, LogOut01 } from "@borisj74/bv-ds-icons";
|
|
3
4
|
|
|
4
5
|
export type NavAccountCardVariant = "simple" | "card";
|
|
5
6
|
export type NavAccountCardBreakpoint = "desktop" | "mobile";
|
|
@@ -31,22 +32,11 @@ export interface NavAccountCardProps
|
|
|
31
32
|
menu?: ReactNode;
|
|
32
33
|
}
|
|
33
34
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
const LogOut = () => (
|
|
41
|
-
<svg viewBox="0 0 16 16" fill="none" className="size-4" aria-hidden>
|
|
42
|
-
<path
|
|
43
|
-
d="M10.67 11.33 14 8m0 0-3.33-3.33M14 8H6M6 2H4.67c-.93 0-1.4 0-1.76.18-.31.16-.57.42-.73.73C2 3.27 2 3.73 2 4.67v6.66c0 .94 0 1.4.18 1.76.16.31.42.57.73.73.36.18.83.18 1.76.18H6"
|
|
44
|
-
stroke="currentColor"
|
|
45
|
-
strokeWidth="1.33"
|
|
46
|
-
strokeLinecap="round"
|
|
47
|
-
strokeLinejoin="round"
|
|
48
|
-
/>
|
|
49
|
-
</svg>
|
|
35
|
+
// 16px icon container (Figma nav account card).
|
|
36
|
+
const IconBox16 = ({ children }: { children: ReactNode }) => (
|
|
37
|
+
<span className="overflow-clip relative shrink-0 size-[16px] flex items-center justify-center">
|
|
38
|
+
{children}
|
|
39
|
+
</span>
|
|
50
40
|
);
|
|
51
41
|
|
|
52
42
|
/**
|
|
@@ -127,7 +117,9 @@ export function NavAccountCard({
|
|
|
127
117
|
aria-label="Sign out"
|
|
128
118
|
className="absolute right-0 top-[15px] flex items-center justify-center rounded-sm p-sm text-fg-quaternary transition-colors hover:text-fg-quaternary-hover"
|
|
129
119
|
>
|
|
130
|
-
<
|
|
120
|
+
<IconBox16>
|
|
121
|
+
<LogOut01 className="w-full h-full" />
|
|
122
|
+
</IconBox16>
|
|
131
123
|
</button>
|
|
132
124
|
</div>
|
|
133
125
|
);
|
|
@@ -147,7 +139,9 @@ export function NavAccountCard({
|
|
|
147
139
|
open && "bg-bg-primary-hover",
|
|
148
140
|
)}
|
|
149
141
|
>
|
|
150
|
-
<
|
|
142
|
+
<IconBox16>
|
|
143
|
+
<ChevronSelectorVertical className="w-full h-full" />
|
|
144
|
+
</IconBox16>
|
|
151
145
|
</span>
|
|
152
146
|
</button>
|
|
153
147
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type ButtonHTMLAttributes, type ReactNode } from "react";
|
|
2
2
|
import clsx from "clsx";
|
|
3
|
+
import { ChevronDown } from "@borisj74/bv-ds-icons";
|
|
3
4
|
|
|
4
5
|
export interface NavItemBaseProps
|
|
5
6
|
extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children"> {
|
|
@@ -16,12 +17,6 @@ export interface NavItemBaseProps
|
|
|
16
17
|
trailingChevron?: boolean;
|
|
17
18
|
}
|
|
18
19
|
|
|
19
|
-
const ChevronDown = () => (
|
|
20
|
-
<svg viewBox="0 0 16 16" fill="none" className="size-4" aria-hidden>
|
|
21
|
-
<path d="M4 6l4 4 4-4" stroke="currentColor" strokeWidth="1.33" strokeLinecap="round" strokeLinejoin="round" />
|
|
22
|
-
</svg>
|
|
23
|
-
);
|
|
24
|
-
|
|
25
20
|
/**
|
|
26
21
|
* Base sidebar nav link (272px). `current` selects it; optional leading `dot`,
|
|
27
22
|
* leading `icon`, trailing count `badge`, and `trailingChevron`. Brand focus ring.
|
|
@@ -70,7 +65,9 @@ export function NavItemBase({
|
|
|
70
65
|
)}
|
|
71
66
|
{trailingChevron && (
|
|
72
67
|
<span className="shrink-0 text-fg-quaternary">
|
|
73
|
-
<
|
|
68
|
+
<span className="overflow-clip relative shrink-0 size-[16px] flex items-center justify-center">
|
|
69
|
+
<ChevronDown className="w-full h-full" />
|
|
70
|
+
</span>
|
|
74
71
|
</span>
|
|
75
72
|
)}
|
|
76
73
|
</div>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type ButtonHTMLAttributes, type ReactNode } from "react";
|
|
2
2
|
import clsx from "clsx";
|
|
3
|
+
import { ChevronDown } from "@borisj74/bv-ds-icons";
|
|
3
4
|
|
|
4
5
|
export interface NavItemDropdownBaseProps
|
|
5
6
|
extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children"> {
|
|
@@ -16,12 +17,6 @@ export interface NavItemDropdownBaseProps
|
|
|
16
17
|
children?: ReactNode;
|
|
17
18
|
}
|
|
18
19
|
|
|
19
|
-
const Chevron = ({ up }: { up?: boolean }) => (
|
|
20
|
-
<svg viewBox="0 0 16 16" fill="none" className="size-4" aria-hidden>
|
|
21
|
-
<path d={up ? "M4 10l4-4 4 4" : "M4 6l4 4 4-4"} stroke="currentColor" strokeWidth="1.33" strokeLinecap="round" strokeLinejoin="round" />
|
|
22
|
-
</svg>
|
|
23
|
-
);
|
|
24
|
-
|
|
25
20
|
/**
|
|
26
21
|
* Expandable sidebar nav group (272px). The trigger mirrors `NavItemBase`; when
|
|
27
22
|
* `open`, `children` (indented submenu rows) render below with a chevron flip.
|
|
@@ -62,7 +57,11 @@ export function NavItemDropdownBase({
|
|
|
62
57
|
</span>
|
|
63
58
|
</div>
|
|
64
59
|
<span className="shrink-0 text-fg-quaternary">
|
|
65
|
-
<
|
|
60
|
+
<span className="overflow-clip relative shrink-0 size-[16px] flex items-center justify-center">
|
|
61
|
+
<ChevronDown
|
|
62
|
+
className={clsx("w-full h-full transition-transform", open && "rotate-180")}
|
|
63
|
+
/>
|
|
64
|
+
</span>
|
|
66
65
|
</span>
|
|
67
66
|
</div>
|
|
68
67
|
</button>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { type ButtonHTMLAttributes } from "react";
|
|
1
|
+
import { type ButtonHTMLAttributes, type ReactNode } from "react";
|
|
2
2
|
import clsx from "clsx";
|
|
3
|
+
import { Menu02, XClose } from "@borisj74/bv-ds-icons";
|
|
3
4
|
|
|
4
5
|
export interface NavMenuButtonProps
|
|
5
6
|
extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
@@ -7,16 +8,11 @@ export interface NavMenuButtonProps
|
|
|
7
8
|
opened?: boolean;
|
|
8
9
|
}
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const XClose = () => (
|
|
17
|
-
<svg viewBox="0 0 20 20" fill="none" className="size-5" aria-hidden>
|
|
18
|
-
<path d="M15 5 5 15M5 5l10 10" stroke="currentColor" strokeWidth="1.67" strokeLinecap="round" strokeLinejoin="round" />
|
|
19
|
-
</svg>
|
|
11
|
+
// 20px icon container (Figma nav menu button).
|
|
12
|
+
const IconBox = ({ children }: { children: ReactNode }) => (
|
|
13
|
+
<span className="overflow-clip relative shrink-0 size-[20px] flex items-center justify-center">
|
|
14
|
+
{children}
|
|
15
|
+
</span>
|
|
20
16
|
);
|
|
21
17
|
|
|
22
18
|
/**
|
|
@@ -41,7 +37,17 @@ export function NavMenuButton({
|
|
|
41
37
|
)}
|
|
42
38
|
{...rest}
|
|
43
39
|
>
|
|
44
|
-
{opened ?
|
|
40
|
+
{opened ? (
|
|
41
|
+
<span className="opacity-70">
|
|
42
|
+
<IconBox>
|
|
43
|
+
<XClose className="w-full h-full" />
|
|
44
|
+
</IconBox>
|
|
45
|
+
</span>
|
|
46
|
+
) : (
|
|
47
|
+
<IconBox>
|
|
48
|
+
<Menu02 className="w-full h-full" />
|
|
49
|
+
</IconBox>
|
|
50
|
+
)}
|
|
45
51
|
</button>
|
|
46
52
|
);
|
|
47
53
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// The @borisj74/bv-ds-icons package (v0.1.0) ships runtime JS but its published
|
|
2
|
+
// tarball is missing the `dist/index.d.ts` its package.json points at, so TS
|
|
3
|
+
// can't resolve types for the icon imports (TS7016). Declare it as an untyped
|
|
4
|
+
// module until the icons package ships its declarations. Icons are simple SVG
|
|
5
|
+
// React components that accept standard SVG props (className, etc.).
|
|
6
|
+
declare module "@borisj74/bv-ds-icons";
|