@bigtablet/design-system 1.6.0 → 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
@@ -50,6 +50,24 @@
50
50
  }
51
51
 
52
52
  /* src/ui/feedback/alert/style.scss */
53
+ @keyframes fade_in {
54
+ from {
55
+ opacity: 0;
56
+ }
57
+ to {
58
+ opacity: 1;
59
+ }
60
+ }
61
+ @keyframes slide_up {
62
+ from {
63
+ opacity: 0;
64
+ transform: translateY(20px);
65
+ }
66
+ to {
67
+ opacity: 1;
68
+ transform: translateY(0);
69
+ }
70
+ }
53
71
  .alert_overlay {
54
72
  position: fixed;
55
73
  inset: 0;
@@ -73,6 +91,7 @@
73
91
  font-size: 1.125rem;
74
92
  line-height: 1.5;
75
93
  font-weight: 600;
94
+ color: #3b82f6;
76
95
  padding: 0.75rem 1.25rem 0.25rem;
77
96
  }
78
97
  .alert_modal_message {
@@ -81,11 +100,12 @@
81
100
  line-height: 1.5;
82
101
  color: #666666;
83
102
  padding: 1.25rem;
84
- line-height: 1.6;
103
+ line-height: 1.75;
85
104
  }
86
105
  .alert_modal_actions {
87
106
  display: flex;
88
107
  gap: 0.5rem;
108
+ align-items: center;
89
109
  padding: 0 1.25rem 1.25rem;
90
110
  }
91
111
  .alert_modal_actions_left {
@@ -104,47 +124,79 @@
104
124
  font-weight: 600;
105
125
  cursor: pointer;
106
126
  border: 1px solid transparent;
107
- transition: 0.2s ease-out;
127
+ line-height: 1.5;
128
+ transition:
129
+ background 0.2s ease-out,
130
+ border-color 0.2s ease-out,
131
+ box-shadow 0.2s ease-out,
132
+ transform 0.2s ease-out;
108
133
  }
109
134
  .alert_modal_button:focus-visible {
110
- outline: 2px solid rgba(0, 0, 0, 0.08);
135
+ outline: none;
136
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.15);
137
+ }
138
+ .alert_modal_button:active:not(:disabled) {
139
+ transform: scale(0.98);
140
+ }
141
+ .alert_modal_button:disabled {
142
+ cursor: not-allowed;
143
+ opacity: 0.6;
111
144
  }
112
145
  .alert_modal_button_cancel {
113
146
  background: #ffffff;
114
147
  border-color: #e5e5e5;
115
148
  color: #1a1a1a;
116
149
  }
117
- .alert_modal_button_cancel:hover {
150
+ .alert_modal_button_cancel:hover:not(:disabled) {
118
151
  background: #fafafa;
152
+ border-color: rgba(0, 0, 0, 0.08);
119
153
  }
120
154
  .alert_modal_button_confirm {
121
155
  color: #ffffff;
122
156
  }
123
- .alert_modal {
124
- }
125
157
  .alert_modal_info .alert_modal_title {
126
158
  color: #3b82f6;
127
159
  }
128
160
  .alert_modal_info .alert_modal_button_confirm {
129
161
  background: #3b82f6;
162
+ border-color: #3b82f6;
163
+ }
164
+ .alert_modal_info .alert_modal_button_confirm:hover:not(:disabled) {
165
+ background: rgb(29.7434146341, 111.3414634146, 244.6565853659);
166
+ border-color: rgb(29.7434146341, 111.3414634146, 244.6565853659);
130
167
  }
131
168
  .alert_modal_success .alert_modal_title {
132
169
  color: #10b981;
133
170
  }
134
171
  .alert_modal_success .alert_modal_button_confirm {
135
172
  background: #10b981;
173
+ border-color: #10b981;
174
+ }
175
+ .alert_modal_success .alert_modal_button_confirm:hover:not(:disabled) {
176
+ background: rgb(13.5641791045, 156.8358208955, 109.3611940299);
177
+ border-color: rgb(13.5641791045, 156.8358208955, 109.3611940299);
136
178
  }
137
179
  .alert_modal_warning .alert_modal_title {
138
180
  color: #f59e0b;
139
181
  }
140
182
  .alert_modal_warning .alert_modal_button_confirm {
141
183
  background: #f59e0b;
184
+ border-color: #f59e0b;
185
+ }
186
+ .alert_modal_warning .alert_modal_button_confirm:hover:not(:disabled) {
187
+ background: rgb(216.525984252, 139.3220472441, 8.874015748);
188
+ border-color: rgb(216.525984252, 139.3220472441, 8.874015748);
142
189
  }
143
190
  .alert_modal_error .alert_modal_title {
144
191
  color: #ef4444;
145
192
  }
146
193
  .alert_modal_error .alert_modal_button_confirm {
147
194
  background: #ef4444;
195
+ border-color: #ef4444;
196
+ }
197
+ .alert_modal_error .alert_modal_button_confirm:hover:not(:disabled) {
198
+ background: rgb(236.5881773399, 39.8118226601, 39.8118226601);
199
+ border-color: rgb(236.5881773399, 39.8118226601, 39.8118226601);
148
200
  }
149
201
 
150
202
  /* src/ui/feedback/loading/style.scss */
@@ -879,6 +931,93 @@
879
931
  color: #999999;
880
932
  }
881
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
+
882
1021
  /* src/ui/overlay/modal/style.scss */
883
1022
  .modal {
884
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 };