@bigtablet/design-system 1.6.1 → 1.6.2

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.css CHANGED
@@ -931,6 +931,93 @@
931
931
  color: #999999;
932
932
  }
933
933
 
934
+ /* src/ui/navigation/sidebar/style.scss */
935
+ .sidebar {
936
+ display: flex;
937
+ flex-direction: column;
938
+ box-sizing: border-box;
939
+ height: 100%;
940
+ background: #ffffff;
941
+ border-right: 1px solid #e5e5e5;
942
+ padding: 0.5rem;
943
+ gap: 0.5rem;
944
+ }
945
+ .sidebar_brand {
946
+ padding: 0.5rem;
947
+ margin-bottom: 0.5rem;
948
+ border-bottom: 1px solid #e5e5e5;
949
+ }
950
+ .sidebar_brand_link {
951
+ display: block;
952
+ width: 100%;
953
+ }
954
+ .sidebar_brand_img {
955
+ display: block;
956
+ width: 100%;
957
+ height: auto;
958
+ object-fit: contain;
959
+ }
960
+ .sidebar_nav {
961
+ display: grid;
962
+ gap: 0.25rem;
963
+ padding: 0.5rem 0;
964
+ }
965
+ .sidebar_item {
966
+ display: grid;
967
+ grid-template-columns: 24px 1fr;
968
+ align-items: center;
969
+ gap: 0.5rem;
970
+ padding: 0.5rem 0.75rem;
971
+ border-radius: 8px;
972
+ color: #3b3b3b;
973
+ background: transparent;
974
+ border: 1px solid transparent;
975
+ cursor: pointer;
976
+ font-size: 0.9375rem;
977
+ line-height: 1.5;
978
+ transition:
979
+ background-color 0.2s ease-out,
980
+ color 0.2s ease-out,
981
+ border-color 0.2s ease-out;
982
+ }
983
+ .sidebar_item:hover {
984
+ background: #fafafa;
985
+ color: #1f2937;
986
+ }
987
+ .sidebar_item:hover .sidebar_icon {
988
+ color: #1f2937;
989
+ }
990
+ .sidebar_item.is_active {
991
+ position: relative;
992
+ background: #ffffff;
993
+ border-color: #e5e5e5;
994
+ color: #1f2937;
995
+ box-shadow: inset 0 0 0 1px #e5e5e5;
996
+ }
997
+ .sidebar_item.is_active::before {
998
+ content: "";
999
+ position: absolute;
1000
+ left: 0;
1001
+ top: 6px;
1002
+ bottom: 6px;
1003
+ width: 3px;
1004
+ border-radius: 9999px;
1005
+ background: #000000;
1006
+ }
1007
+ .sidebar_item.is_active .sidebar_icon {
1008
+ color: #1f2937;
1009
+ }
1010
+ .sidebar_icon {
1011
+ display: inline-grid;
1012
+ place-items: center;
1013
+ color: #6b7280;
1014
+ transition: color 0.2s ease-out;
1015
+ }
1016
+ .sidebar_label {
1017
+ white-space: nowrap;
1018
+ text-overflow: ellipsis;
1019
+ }
1020
+
934
1021
  /* src/ui/overlay/modal/style.scss */
935
1022
  .modal {
936
1023
  position: fixed;
package/dist/index.d.ts CHANGED
@@ -31,23 +31,6 @@ declare const useAlert: () => AlertContextValue;
31
31
  declare const AlertProvider: React.FC<{
32
32
  children: React.ReactNode;
33
33
  }>;
34
- interface AlertProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
35
- variant?: AlertVariant;
36
- title?: React.ReactNode;
37
- icon?: React.ReactNode;
38
- closable?: boolean;
39
- onClose?: () => void;
40
- showActions?: boolean;
41
- onConfirm?: () => void;
42
- onCancel?: () => void;
43
- confirmText?: string;
44
- cancelText?: string;
45
- actionsAlign?: AlertActionsAlign;
46
- }
47
- /**
48
- * @deprecated Use useAlert hook with AlertProvider instead
49
- */
50
- declare const Alert: ({ variant, title, icon, closable, onClose, showActions, onConfirm, onCancel, confirmText, cancelText, actionsAlign, className, children, ...props }: AlertProps) => react_jsx_runtime.JSX.Element;
51
34
 
52
35
  interface LoadingProps {
53
36
  size?: number;
@@ -147,6 +130,26 @@ interface PaginationProps {
147
130
  }
148
131
  declare const Pagination: ({ page, totalPages, onChange }: PaginationProps) => react_jsx_runtime.JSX.Element;
149
132
 
133
+ interface SidebarItem {
134
+ href: string;
135
+ label: React.ReactNode;
136
+ icon?: React.ComponentType<{
137
+ size?: number;
138
+ }>;
139
+ }
140
+ type MatchMode = "startsWith" | "exact";
141
+ interface SidebarProps {
142
+ items?: SidebarItem[];
143
+ activePath?: string;
144
+ onItemSelect?: (href: string) => void;
145
+ width?: number;
146
+ className?: string;
147
+ style?: React.CSSProperties;
148
+ match?: MatchMode;
149
+ brandHref?: string;
150
+ }
151
+ declare const Sidebar: ({ items, activePath, onItemSelect, width, className, style, match, brandHref, }: SidebarProps) => react_jsx_runtime.JSX.Element;
152
+
150
153
  interface ModalProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
151
154
  open: boolean;
152
155
  onClose?: () => void;
@@ -156,4 +159,4 @@ interface ModalProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title">
156
159
  }
157
160
  declare const Modal: ({ open, onClose, closeOnOverlay, width, title, children, className, ...props }: ModalProps) => react_jsx_runtime.JSX.Element | null;
158
161
 
159
- export { Alert, AlertProvider, Button, Card, Checkbox, FileInput, Loading, Modal, Pagination, Radio, Select, type SelectOption, Switch, TextField, ToastProvider, useAlert, useToast };
162
+ export { AlertProvider, Button, Card, Checkbox, FileInput, Loading, Modal, Pagination, Radio, Select, type SelectOption, Sidebar, Switch, TextField, ToastProvider, useAlert, useToast };