@bunnix/components 0.9.0

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.
Files changed (152) hide show
  1. package/@types/index.d.ts +269 -0
  2. package/LICENSE +7 -0
  3. package/README.md +184 -0
  4. package/package.json +53 -0
  5. package/src/components/AccordionGroup.mjs +37 -0
  6. package/src/components/Badge.mjs +49 -0
  7. package/src/components/Button.mjs +76 -0
  8. package/src/components/Checkbox.mjs +36 -0
  9. package/src/components/ComboBox.mjs +44 -0
  10. package/src/components/Container.mjs +27 -0
  11. package/src/components/DatePicker.mjs +251 -0
  12. package/src/components/Dialog.mjs +166 -0
  13. package/src/components/DropdownMenu.mjs +110 -0
  14. package/src/components/Grid.mjs +40 -0
  15. package/src/components/HStack.mjs +34 -0
  16. package/src/components/Icon.mjs +32 -0
  17. package/src/components/InputField.mjs +78 -0
  18. package/src/components/NavigationBar.mjs +47 -0
  19. package/src/components/PageHeader.mjs +13 -0
  20. package/src/components/PageSection.mjs +20 -0
  21. package/src/components/PopoverMenu.mjs +87 -0
  22. package/src/components/RadioCheckbox.mjs +36 -0
  23. package/src/components/SearchBox.mjs +207 -0
  24. package/src/components/Sidebar.mjs +187 -0
  25. package/src/components/Table.mjs +254 -0
  26. package/src/components/Text.mjs +38 -0
  27. package/src/components/TimePicker.mjs +172 -0
  28. package/src/components/ToastNotification.mjs +105 -0
  29. package/src/components/ToggleSwitch.mjs +26 -0
  30. package/src/components/VStack.mjs +35 -0
  31. package/src/icons/add-circle.svg +1 -0
  32. package/src/icons/add.svg +1 -0
  33. package/src/icons/alt.svg +1 -0
  34. package/src/icons/archive.svg +1 -0
  35. package/src/icons/at.svg +1 -0
  36. package/src/icons/attestation.svg +1 -0
  37. package/src/icons/bell.svg +4 -0
  38. package/src/icons/bookmark.svg +1 -0
  39. package/src/icons/bot.svg +1 -0
  40. package/src/icons/button.svg +1 -0
  41. package/src/icons/calculate.svg +1 -0
  42. package/src/icons/calendar.svg +1 -0
  43. package/src/icons/chart.svg +1 -0
  44. package/src/icons/check.svg +1 -0
  45. package/src/icons/chevron-down.svg +1 -0
  46. package/src/icons/chevron-left.svg +1 -0
  47. package/src/icons/chevron-right.svg +1 -0
  48. package/src/icons/clip.svg +1 -0
  49. package/src/icons/clock.svg +4 -0
  50. package/src/icons/close-circle.svg +4 -0
  51. package/src/icons/close.svg +1 -0
  52. package/src/icons/cloud-download.svg +1 -0
  53. package/src/icons/cloud-upload.svg +1 -0
  54. package/src/icons/cloud.svg +1 -0
  55. package/src/icons/columns-layout.svg +1 -0
  56. package/src/icons/command.svg +1 -0
  57. package/src/icons/cube.svg +1 -0
  58. package/src/icons/delete.svg +4 -0
  59. package/src/icons/dollar.svg +4 -0
  60. package/src/icons/download.svg +1 -0
  61. package/src/icons/draw.svg +1 -0
  62. package/src/icons/duplicate.svg +4 -0
  63. package/src/icons/edit.svg +1 -0
  64. package/src/icons/exclamation-mark.svg +1 -0
  65. package/src/icons/eye-open.svg +1 -0
  66. package/src/icons/eye.svg +1 -0
  67. package/src/icons/file-html.svg +1 -0
  68. package/src/icons/file.svg +4 -0
  69. package/src/icons/finger.svg +1 -0
  70. package/src/icons/flag.svg +1 -0
  71. package/src/icons/folder.svg +1 -0
  72. package/src/icons/function.svg +1 -0
  73. package/src/icons/gear.svg +1 -0
  74. package/src/icons/gift.svg +1 -0
  75. package/src/icons/globe.svg +4 -0
  76. package/src/icons/grid.svg +1 -0
  77. package/src/icons/hand.svg +1 -0
  78. package/src/icons/heart.svg +4 -0
  79. package/src/icons/home.svg +4 -0
  80. package/src/icons/image.svg +1 -0
  81. package/src/icons/inbox.svg +4 -0
  82. package/src/icons/info.svg +1 -0
  83. package/src/icons/key.svg +1 -0
  84. package/src/icons/lamp.svg +1 -0
  85. package/src/icons/link.svg +1 -0
  86. package/src/icons/location.svg +1 -0
  87. package/src/icons/locker.svg +1 -0
  88. package/src/icons/login.svg +1 -0
  89. package/src/icons/logout.svg +4 -0
  90. package/src/icons/mail.svg +4 -0
  91. package/src/icons/map.svg +4 -0
  92. package/src/icons/markup.svg +1 -0
  93. package/src/icons/merge.svg +1 -0
  94. package/src/icons/more-horizontal.svg +5 -0
  95. package/src/icons/more-vertical.svg +5 -0
  96. package/src/icons/mouse.svg +1 -0
  97. package/src/icons/palette.svg +1 -0
  98. package/src/icons/password.svg +1 -0
  99. package/src/icons/pencil.svg +1 -0
  100. package/src/icons/people.svg +4 -0
  101. package/src/icons/person-add.svg +1 -0
  102. package/src/icons/person-remove.svg +1 -0
  103. package/src/icons/person.svg +5 -0
  104. package/src/icons/pin.svg +1 -0
  105. package/src/icons/question-circle.svg +4 -0
  106. package/src/icons/remove-circle.svg +1 -0
  107. package/src/icons/return-arrow.svg +2 -0
  108. package/src/icons/save.svg +1 -0
  109. package/src/icons/search.svg +1 -0
  110. package/src/icons/sections.svg +1 -0
  111. package/src/icons/send.svg +1 -0
  112. package/src/icons/share.svg +1 -0
  113. package/src/icons/shine.svg +1 -0
  114. package/src/icons/sliders.svg +1 -0
  115. package/src/icons/star.svg +4 -0
  116. package/src/icons/storage.svg +1 -0
  117. package/src/icons/success-circle.svg +4 -0
  118. package/src/icons/swap.svg +1 -0
  119. package/src/icons/switch.svg +1 -0
  120. package/src/icons/sync.svg +4 -0
  121. package/src/icons/table.svg +4 -0
  122. package/src/icons/tag.svg +4 -0
  123. package/src/icons/terminal.svg +1 -0
  124. package/src/icons/text.svg +1 -0
  125. package/src/icons/thumb-down.svg +1 -0
  126. package/src/icons/thumb-up.svg +1 -0
  127. package/src/icons/timer.svg +4 -0
  128. package/src/icons/toggle.svg +1 -0
  129. package/src/icons/trash.svg +1 -0
  130. package/src/icons/update-page.svg +1 -0
  131. package/src/icons/upload.svg +1 -0
  132. package/src/icons/video.svg +1 -0
  133. package/src/icons/wallet.svg +1 -0
  134. package/src/icons/window.svg +1 -0
  135. package/src/index.mjs +29 -0
  136. package/src/styles/accordion.css +70 -0
  137. package/src/styles/buttons.css +118 -0
  138. package/src/styles/colors.css +131 -0
  139. package/src/styles/controls.css +504 -0
  140. package/src/styles/datepicker.css +140 -0
  141. package/src/styles/interactable.css +16 -0
  142. package/src/styles/layout.css +444 -0
  143. package/src/styles/links.css +38 -0
  144. package/src/styles/main.css +16 -0
  145. package/src/styles/media.css +155 -0
  146. package/src/styles/menu.css +168 -0
  147. package/src/styles/motion.css +66 -0
  148. package/src/styles/table.css +78 -0
  149. package/src/styles/timepicker.css +87 -0
  150. package/src/styles/typography.css +94 -0
  151. package/src/styles/variables.css +218 -0
  152. package/src/styles.css +1 -0
@@ -0,0 +1,168 @@
1
+ /* Modern Popover Logic with Dynamic Anchoring */
2
+ [popover].menu-popover {
3
+ margin: 0;
4
+ padding: 0;
5
+ inset: auto;
6
+ overflow: visible;
7
+ border: none;
8
+ background: transparent;
9
+
10
+ /* Modern CSS Anchor Positioning (Chrome/Edge) */
11
+ position-anchor: var(--anchor-id);
12
+ position: fixed;
13
+ top: anchor(var(--anchor-id) bottom);
14
+ left: anchor(var(--anchor-id) left);
15
+
16
+ /* Fallback for Safari/Firefox:
17
+ Since .menu-wrapper is relative, this puts it below the button
18
+ */
19
+ margin-top: var(--base-gap);
20
+ }
21
+
22
+ /* Custom Try States to prevent horizontal shifting */
23
+ @position-try --flip-v {
24
+ top: auto;
25
+ bottom: anchor(var(--anchor-id) top);
26
+ left: anchor(var(--anchor-id) left);
27
+ }
28
+
29
+ @position-try --flip-v-right {
30
+ top: auto;
31
+ bottom: anchor(var(--anchor-id) top);
32
+ right: anchor(var(--anchor-id) right);
33
+ }
34
+
35
+ [popover].menu-popover {
36
+ position-try-fallbacks: --flip-v, --flip-v-right;
37
+ }
38
+
39
+ /* Alignment Modifiers for Menu */
40
+ .menu-anchor-right {
41
+ left: auto !important;
42
+ right: anchor(var(--anchor-id) right) !important;
43
+ }
44
+
45
+ .menu-anchor-left {
46
+ left: anchor(var(--anchor-id) left) !important;
47
+ right: auto !important;
48
+ }
49
+
50
+ [popover].menu-popover {
51
+ position-try-fallbacks: --flip-v, --flip-v-right;
52
+ position-try-order: most-height;
53
+ }
54
+
55
+ [popover].menu-popover.match-anchor {
56
+ min-width: anchor-size(var(--anchor-id) width);
57
+ width: anchor-size(var(--anchor-id) width);
58
+ max-width: anchor-size(var(--anchor-id) width);
59
+ }
60
+
61
+ [popover].menu-popover .selected .icon {
62
+ background-color: white !important;
63
+ }
64
+
65
+ [popover].menu-popover .selected,
66
+ [popover].menu-popover .selected .text-secondary,
67
+ [popover].menu-popover .selected .text-sm,
68
+ [popover].menu-popover .selected .text-base {
69
+ color: white !important;
70
+ }
71
+
72
+ [popover].menu-popover.menu-anchor-right {
73
+ position-try-fallbacks: --flip-v-right, --flip-v;
74
+ }
75
+
76
+ [popover].menu-popover.menu-anchor-left {
77
+ position-try-fallbacks: --flip-v, --flip-v-right;
78
+ }
79
+
80
+ [popover]:popover-open {
81
+ display: flex;
82
+ }
83
+
84
+ .menu-wrapper {
85
+ position: relative;
86
+ display: inline-block;
87
+ }
88
+
89
+ .dropdown-trigger {
90
+ appearance: none;
91
+ background-color: var(--background-color);
92
+ border: 1px solid var(--border-color);
93
+ border-radius: var(--min-control-radius);
94
+ color: var(--color-primary);
95
+ font-family: var(--font-family);
96
+ font-size: var(--font-size);
97
+ font-weight: var(--font-regular);
98
+ padding: calc(var(--base-padding) * 0.5) var(--base-padding);
99
+ padding-right: calc(var(--base-padding) * 3) !important;
100
+ display: inline-flex;
101
+ align-items: center;
102
+ gap: var(--base-gap);
103
+ cursor: pointer;
104
+ min-width: 150px;
105
+ text-align: left;
106
+ position: relative;
107
+ }
108
+
109
+ .dropdown-trigger.dropdown-lg {
110
+ padding: calc(var(--base-padding) * 0.75) calc(var(--base-padding) * 1.25);
111
+ padding-right: calc(var(--base-padding) * 3.25) !important;
112
+ font-size: 1.1rem;
113
+ }
114
+
115
+ .dropdown-trigger.dropdown-xl {
116
+ padding: var(--base-padding) calc(var(--base-padding) * 1.5);
117
+ padding-right: calc(var(--base-padding) * 3.5) !important;
118
+ font-size: 1.2rem;
119
+ }
120
+
121
+ .dropdown-trigger::after {
122
+ content: "";
123
+ position: absolute;
124
+ right: var(--base-padding);
125
+ top: 50%;
126
+ transform: translateY(-50%);
127
+ width: 1rem;
128
+ height: 1rem;
129
+ background-color: currentColor;
130
+ -webkit-mask-image: var(--svg-chevron-down);
131
+ mask-image: var(--svg-chevron-down);
132
+ -webkit-mask-size: contain;
133
+ mask-size: contain;
134
+ -webkit-mask-repeat: no-repeat;
135
+ mask-repeat: no-repeat;
136
+ pointer-events: none;
137
+ }
138
+
139
+ .dropdown-trigger.no-chevron::after {
140
+ display: none;
141
+ }
142
+
143
+ .dropdown-trigger.no-chevron {
144
+ padding-right: var(--base-padding) !important;
145
+ }
146
+
147
+ .dropdown-trigger.dropdown-lg::after {
148
+ width: 1.1rem;
149
+ height: 1.1rem;
150
+ }
151
+
152
+ .dropdown-trigger.dropdown-xl::after {
153
+ width: 1.2rem;
154
+ height: 1.2rem;
155
+ }
156
+
157
+ .dropdown-trigger:focus {
158
+ border-color: var(--accent-color);
159
+ }
160
+
161
+ .dropdown-trigger:hover {
162
+ background-color: var(--highlight-background-color);
163
+ }
164
+
165
+ .menu-wrapper:has([popover]:popover-open) > .btn,
166
+ .menu-wrapper:has([popover]:popover-open) > .dropdown-trigger {
167
+ background-color: var(--highlight-background-color) !important;
168
+ }
@@ -0,0 +1,66 @@
1
+ .slide-in-right {
2
+ animation: slideInRight 0.2s ease-out;
3
+ }
4
+
5
+ .slide-in-left {
6
+ animation: slideInLeft 0.2s ease-out;
7
+ }
8
+
9
+ .dialog-appear {
10
+ animation: dialogAppear 0.18s ease-out;
11
+ transform-origin: center;
12
+ }
13
+
14
+ .dialog-backdrop::backdrop {
15
+ animation: dialogBackdrop 0.18s ease-out;
16
+ }
17
+
18
+ @keyframes slideInRight {
19
+ from {
20
+ transform: translateX(12px);
21
+ opacity: 0;
22
+ }
23
+ to {
24
+ transform: translateX(0);
25
+ opacity: 1;
26
+ }
27
+ }
28
+
29
+ @keyframes slideInLeft {
30
+ from {
31
+ transform: translateX(-12px);
32
+ opacity: 0;
33
+ }
34
+ to {
35
+ transform: translateX(0);
36
+ opacity: 1;
37
+ }
38
+ }
39
+
40
+ @keyframes dialogAppear {
41
+ from {
42
+ transform: scale(0.96);
43
+ opacity: 0;
44
+ }
45
+ to {
46
+ transform: scale(1);
47
+ opacity: 1;
48
+ }
49
+ }
50
+
51
+ @keyframes dialogBackdrop {
52
+ from {
53
+ opacity: 0;
54
+ }
55
+ to {
56
+ opacity: 1;
57
+ }
58
+ }
59
+
60
+ @media (prefers-reduced-motion: reduce) {
61
+ .dialog-appear,
62
+ .slide-in-right,
63
+ .slide-in-left {
64
+ animation: none;
65
+ }
66
+ }
@@ -0,0 +1,78 @@
1
+ .table {
2
+ width: 100%;
3
+ border-collapse: separate; /* Required for border-radius */
4
+ border-spacing: 0;
5
+ text-align: left;
6
+ }
7
+
8
+ .table th,
9
+ .table td {
10
+ padding: var(--base-padding);
11
+ vertical-align: middle;
12
+ border-bottom: 1px solid var(--border-color);
13
+ }
14
+
15
+ .table th {
16
+ font-weight: var(--font-bold);
17
+ color: var(--color-primary);
18
+ }
19
+
20
+ /* Remove bottom border from last row */
21
+ .table tr:last-child td {
22
+ border-bottom: none;
23
+ }
24
+
25
+ /* Variant: With Background */
26
+ .table-bg {
27
+ background-color: var(--alternate-background-color);
28
+ }
29
+
30
+ /* Variant: Bordered (Outer border + rounded) */
31
+ .table-bordered {
32
+ border: 1px solid var(--border-color);
33
+ border-radius: var(--base-radius);
34
+ /* Ensure background colors don't bleed */
35
+ overflow: hidden;
36
+ }
37
+
38
+ /* Ensure border works with radius on table element */
39
+ .table-bordered th:first-child {
40
+ border-top-left-radius: var(--base-radius);
41
+ }
42
+ .table-bordered th:last-child {
43
+ border-top-right-radius: var(--base-radius);
44
+ }
45
+ .table-bordered tr:last-child td:first-child {
46
+ border-bottom-left-radius: var(--base-radius);
47
+ }
48
+ .table-bordered tr:last-child td:last-child {
49
+ border-bottom-right-radius: var(--base-radius);
50
+ }
51
+
52
+ /* Modifier: Hover Rows */
53
+ .table-hover-rows tr:hover td {
54
+ background-color: var(--highlight-background-color);
55
+ }
56
+
57
+ .table-interactive tbody tr {
58
+ cursor: pointer;
59
+ }
60
+
61
+ .table-sortable {
62
+ cursor: pointer;
63
+ user-select: none;
64
+ }
65
+
66
+ .table-sortable .table-sort-icon {
67
+ margin-left: var(--base-gap);
68
+ vertical-align: middle;
69
+ }
70
+
71
+ .table-checkbox-cell {
72
+ text-align: center;
73
+ width: 40px;
74
+ }
75
+
76
+ .table-checkbox {
77
+ gap: 0;
78
+ }
@@ -0,0 +1,87 @@
1
+ .timepicker-wrapper {
2
+ position: relative;
3
+ display: inline-block;
4
+ }
5
+
6
+ [popover].timepicker-popover {
7
+ margin: 0;
8
+ padding: 0;
9
+ inset: auto;
10
+ overflow: visible;
11
+ border: none;
12
+ background: transparent;
13
+ position-anchor: var(--anchor-id);
14
+ position: fixed;
15
+ top: anchor(var(--anchor-id) bottom);
16
+ left: anchor(var(--anchor-id) left);
17
+ width: auto;
18
+ margin-top: var(--base-gap);
19
+ }
20
+
21
+ @position-try --time-flip-v {
22
+ top: auto;
23
+ bottom: anchor(var(--anchor-id) top);
24
+ left: anchor(var(--anchor-id) left);
25
+ }
26
+
27
+ [popover].timepicker-popover {
28
+ position-try-fallbacks: --time-flip-v;
29
+ }
30
+
31
+ .timepicker-card {
32
+ min-width: 240px; /* Proportional for H1 size */
33
+ overflow: hidden;
34
+ }
35
+
36
+ .timepicker-display {
37
+ display: flex;
38
+ align-items: center;
39
+ justify-content: center;
40
+ gap: var(--base-gap);
41
+ padding: var(--base-padding);
42
+ background-color: transparent;
43
+ border-radius: var(--base-radius) var(--base-radius) 0 0;
44
+ }
45
+
46
+ input.time-segment {
47
+ font-size: 2rem !important; /* H1 Equivalent */
48
+ font-weight: var(--font-bold) !important;
49
+ height: calc(var(--base-padding) * 5) !important;
50
+ width: calc(var(--base-padding) * 5) !important;
51
+ padding: 0 !important;
52
+ margin: 0 !important;
53
+ border-radius: var(--base-radius);
54
+ cursor: pointer;
55
+ background: transparent !important;
56
+ border: 2px solid transparent !important;
57
+ color: var(--color-primary) !important;
58
+ line-height: 1 !important;
59
+ text-align: center !important;
60
+ font-family: inherit !important;
61
+ appearance: none !important;
62
+ outline: none !important;
63
+ transition: all 0.2s ease;
64
+ box-sizing: border-box !important;
65
+ }
66
+
67
+ input.time-segment::-webkit-inner-spin-button,
68
+ input.time-segment::-webkit-outer-spin-button {
69
+ appearance: none;
70
+ margin: 0;
71
+ }
72
+
73
+ input.time-segment:focus {
74
+ border-color: var(--accent-color) !important;
75
+ background-color: var(--highlight-background-color) !important;
76
+ color: var(--accent-color) !important;
77
+ }
78
+
79
+ .time-separator {
80
+ font-size: 1.75rem;
81
+ font-weight: var(--font-bold);
82
+ color: var(--color-tertiary);
83
+ display: flex;
84
+ align-items: center;
85
+ height: calc(var(--base-padding) * 5);
86
+ line-height: 1;
87
+ }
@@ -0,0 +1,94 @@
1
+ body {
2
+ font-family: var(--font-family);
3
+ font-size: var(--font-size);
4
+ font-size-adjust: var(--font-size-adjust, 0.52);
5
+ line-height: 1.5;
6
+ }
7
+
8
+ html * { -webkit-text-size-adjust: 100%; }
9
+
10
+ h1, h2, h3, h4, h5, h6, p {
11
+ margin: 0;
12
+ }
13
+
14
+ h1 {
15
+ font-size: 2rem;
16
+ line-height: 1.2;
17
+ font-weight: var(--font-bold);
18
+ }
19
+
20
+ h2 {
21
+ font-size: 1.5rem;
22
+ line-height: 1.25;
23
+ font-weight: var(--font-bold);
24
+ }
25
+
26
+ h3 {
27
+ font-size: 1.25rem;
28
+ line-height: 1.3;
29
+ font-weight: var(--font-bold);
30
+ }
31
+
32
+ h4 {
33
+ font-size: 1rem;
34
+ line-height: 1.4;
35
+ font-weight: var(--font-semibold);
36
+ }
37
+
38
+ h5 {
39
+ font-size: 1rem;
40
+ line-height: 1.4;
41
+ font-weight: var(--font-semibold);
42
+ color: var(--color-secondary); /* Match H6 color */
43
+ }
44
+
45
+ h6 {
46
+ font-size: 1rem;
47
+ line-height: 1.4;
48
+ font-weight: var(--font-bold);
49
+ color: var(--color-secondary);
50
+ font-size: 0.85rem;
51
+ letter-spacing: 0.05em;
52
+ }
53
+
54
+ .text-mono {
55
+ font-family: monospace;
56
+ }
57
+
58
+ .text-sm {
59
+ font-size: var(--font-size-sm);
60
+ }
61
+
62
+ .text-base {
63
+ font-size: 1rem;
64
+ }
65
+
66
+ .text-lg {
67
+ font-size: 1.125rem;
68
+ }
69
+
70
+ .text-xl {
71
+ font-size: 1.25rem;
72
+ }
73
+
74
+ .font-inherit {
75
+ font-weight: inherit;
76
+ font-size: inherit;
77
+ line-height: inherit;
78
+ }
79
+
80
+ .whitespace-nowrap {
81
+ white-space: nowrap;
82
+ }
83
+
84
+ .whitespace-pre-line {
85
+ white-space: pre-line;
86
+ }
87
+
88
+ .label {
89
+ display: block;
90
+ font-size: var(--font-size);
91
+ font-weight: var(--font-semibold);
92
+ color: var(--color-secondary);
93
+ margin-bottom: var(--base-gap);
94
+ }
@@ -0,0 +1,218 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Roboto:wght@400;500;700&display=swap');
2
+
3
+ :root {
4
+ color-scheme: light dark; /* Critical for light-dark() to work */
5
+
6
+ /* Colors (light defaults; dark overrides below for Safari fallback) */
7
+ --color-primary: #000;
8
+ --color-primary-dimmed: #444;
9
+ --color-secondary: #666;
10
+ --color-tertiary: #999;
11
+ --color-quaternary: #b3b3b3;
12
+ --color-destructive: #d73a49;
13
+ --color-destructive-dimmed: #b31d28;
14
+ --color-success: #2da44e;
15
+ --color-info: #f2994a;
16
+ --accent-color: #007bff;
17
+ --accent-color-dimmed: #0069d9;
18
+
19
+ --border-color: #ccc;
20
+ --background-color: #fff;
21
+ --alternate-background-color: #f5f5f5;
22
+ --highlight-background-color: #e5e5e5;
23
+
24
+ /* Shadow */
25
+ --shadow-base: 0 4px 12px rgba(0, 0, 0, 0.15);
26
+
27
+ /* Layout */
28
+ --body-margin: 0;
29
+ --base-margin: .15rem;
30
+ --base-gap: .5rem;
31
+ --base-radius: 1rem;
32
+ --base-padding: .75rem;
33
+
34
+ /* Controls */
35
+ --min-control-height: 34px;
36
+ --min-control-radius: calc(var(--base-radius) * 0.4);
37
+
38
+ /* Sidebar */
39
+ --sidebar-width: 280px;
40
+ --sidebar-padding: var(--base-padding);
41
+ --sidebar-gap: 1px;
42
+
43
+ /* Typography */
44
+ --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
45
+ --font-regular: 400;
46
+ --font-bold: 600;
47
+ --font-semibold: 500;
48
+ --font-size: 14px;
49
+ --font-size-sm: 12px;
50
+ --font-size-xs: 10px;
51
+
52
+ /* Switch */
53
+ --switch-track-w: 2.75rem;
54
+ --switch-track-h: 1.6rem;
55
+ --switch-thumb: 1.2rem;
56
+ --switch-pad: calc((var(--switch-track-h) - var(--switch-thumb)) / 2);
57
+ --switch-track-w-lg: 3.25rem;
58
+ --switch-track-h-lg: 1.8rem;
59
+ --switch-thumb-lg: 1.35rem;
60
+ --switch-pad-lg: calc((var(--switch-track-h-lg) - var(--switch-thumb-lg)) / 2);
61
+ --switch-track-w-xl: 3.75rem;
62
+ --switch-track-h-xl: 2rem;
63
+ --switch-thumb-xl: 1.5rem;
64
+ --switch-pad-xl: calc((var(--switch-track-h-xl) - var(--switch-thumb-xl)) / 2);
65
+
66
+ /* Icons */
67
+ --svg-add-circle: url('../icons/add-circle.svg');
68
+ --svg-add: url('../icons/add.svg');
69
+ --svg-alt: url('../icons/alt.svg');
70
+ --svg-archive: url('../icons/archive.svg');
71
+ --svg-at: url('../icons/at.svg');
72
+ --svg-attestation: url('../icons/attestation.svg');
73
+ --svg-bell: url('../icons/bell.svg');
74
+ --svg-bookmark: url('../icons/bookmark.svg');
75
+ --svg-bot: url('../icons/bot.svg');
76
+ --svg-button: url('../icons/button.svg');
77
+ --svg-calculate: url('../icons/calculate.svg');
78
+ --svg-calendar: url('../icons/calendar.svg');
79
+ --svg-chart: url('../icons/chart.svg');
80
+ --svg-check: url('../icons/check.svg');
81
+ --svg-chevron-down: url('../icons/chevron-down.svg');
82
+ --svg-chevron-left: url('../icons/chevron-left.svg');
83
+ --svg-chevron-right: url('../icons/chevron-right.svg');
84
+ --svg-clip: url('../icons/clip.svg');
85
+ --svg-clock: url('../icons/clock.svg');
86
+ --svg-close-circle: url('../icons/close-circle.svg');
87
+ --svg-close: url('../icons/close.svg');
88
+ --svg-cloud-download: url('../icons/cloud-download.svg');
89
+ --svg-cloud-upload: url('../icons/cloud-upload.svg');
90
+ --svg-cloud: url('../icons/cloud.svg');
91
+ --svg-columns-layout: url('../icons/columns-layout.svg');
92
+ --svg-command: url('../icons/command.svg');
93
+ --svg-cube: url('../icons/cube.svg');
94
+ --svg-delete: url('../icons/delete.svg');
95
+ --svg-dollar: url('../icons/dollar.svg');
96
+ --svg-download: url('../icons/download.svg');
97
+ --svg-draw: url('../icons/draw.svg');
98
+ --svg-duplicate: url('../icons/duplicate.svg');
99
+ --svg-edit: url('../icons/edit.svg');
100
+ --svg-exclamation-mark: url('../icons/exclamation-mark.svg');
101
+ --svg-eye-open: url('../icons/eye-open.svg');
102
+ --svg-eye: url('../icons/eye.svg');
103
+ --svg-file-html: url('../icons/file-html.svg');
104
+ --svg-file: url('../icons/file.svg');
105
+ --svg-finger: url('../icons/finger.svg');
106
+ --svg-flag: url('../icons/flag.svg');
107
+ --svg-folder: url('../icons/folder.svg');
108
+ --svg-function: url('../icons/function.svg');
109
+ --svg-gear: url('../icons/gear.svg');
110
+ --svg-gift: url('../icons/gift.svg');
111
+ --svg-globe: url('../icons/globe.svg');
112
+ --svg-grid: url('../icons/grid.svg');
113
+ --svg-hand: url('../icons/hand.svg');
114
+ --svg-heart: url('../icons/heart.svg');
115
+ --svg-home: url('../icons/home.svg');
116
+ --svg-image: url('../icons/image.svg');
117
+ --svg-inbox: url('../icons/inbox.svg');
118
+ --svg-info: url('../icons/info.svg');
119
+ --svg-key: url('../icons/key.svg');
120
+ --svg-lamp: url('../icons/lamp.svg');
121
+ --svg-link: url('../icons/link.svg');
122
+ --svg-location: url('../icons/location.svg');
123
+ --svg-locker: url('../icons/locker.svg');
124
+ --svg-login: url('../icons/login.svg');
125
+ --svg-logout: url('../icons/logout.svg');
126
+ --svg-mail: url('../icons/mail.svg');
127
+ --svg-map: url('../icons/map.svg');
128
+ --svg-markup: url('../icons/markup.svg');
129
+ --svg-merge: url('../icons/merge.svg');
130
+ --svg-more-horizontal: url('../icons/more-horizontal.svg');
131
+ --svg-more-vertical: url('../icons/more-vertical.svg');
132
+ --svg-mouse: url('../icons/mouse.svg');
133
+ --svg-palette: url('../icons/palette.svg');
134
+ --svg-password: url('../icons/password.svg');
135
+ --svg-pencil: url('../icons/pencil.svg');
136
+ --svg-people: url('../icons/people.svg');
137
+ --svg-person-add: url('../icons/person-add.svg');
138
+ --svg-person-remove: url('../icons/person-remove.svg');
139
+ --svg-person: url('../icons/person.svg');
140
+ --svg-pin: url('../icons/pin.svg');
141
+ --svg-question-circle: url('../icons/question-circle.svg');
142
+ --svg-remove-circle: url('../icons/remove-circle.svg');
143
+ --svg-return-arrow: url('../icons/return-arrow.svg');
144
+ --svg-save: url('../icons/save.svg');
145
+ --svg-search: url('../icons/search.svg');
146
+ --svg-sections: url('../icons/sections.svg');
147
+ --svg-send: url('../icons/send.svg');
148
+ --svg-share: url('../icons/share.svg');
149
+ --svg-shine: url('../icons/shine.svg');
150
+ --svg-sliders: url('../icons/sliders.svg');
151
+ --svg-star: url('../icons/star.svg');
152
+ --svg-storage: url('../icons/storage.svg');
153
+ --svg-success-circle: url('../icons/success-circle.svg');
154
+ --svg-swap: url('../icons/swap.svg');
155
+ --svg-switch: url('../icons/switch.svg');
156
+ --svg-sync: url('../icons/sync.svg');
157
+ --svg-table: url('../icons/table.svg');
158
+ --svg-tag: url('../icons/tag.svg');
159
+ --svg-text: url('../icons/text.svg');
160
+ --svg-terminal: url('../icons/terminal.svg');
161
+ --svg-thumb-down: url('../icons/thumb-down.svg');
162
+ --svg-thumb-up: url('../icons/thumb-up.svg');
163
+ --svg-timer: url('../icons/timer.svg');
164
+ --svg-toggle: url('../icons/toggle.svg');
165
+ --svg-trash: url('../icons/trash.svg');
166
+ --svg-update-page: url('../icons/update-page.svg');
167
+ --svg-upload: url('../icons/upload.svg');
168
+ --svg-video: url('../icons/video.svg');
169
+ --svg-wallet: url('../icons/wallet.svg');
170
+ --svg-window: url('../icons/window.svg');
171
+ }
172
+
173
+ @media (prefers-color-scheme: dark) {
174
+ :root {
175
+ --color-primary: #fff;
176
+ --color-primary-dimmed: #eee;
177
+ --color-secondary: #ccc;
178
+ --color-tertiary: #888;
179
+ --color-quaternary: #666;
180
+ --color-destructive: #f85149;
181
+ --color-destructive-dimmed: #da3633;
182
+ --color-success: #3fb950;
183
+ --color-info: #f2994a;
184
+ --accent-color: #007bff;
185
+ --accent-color-dimmed: #0069d9;
186
+
187
+ --border-color: #333;
188
+ --background-color: #000;
189
+ --alternate-background-color: #111;
190
+ --highlight-background-color: #222;
191
+
192
+ --svg-chevron-select: var(--svg-chevron-down);
193
+ }
194
+ }
195
+
196
+ @supports (color: light-dark(black, white)) {
197
+ :root {
198
+ /* Override fallback with light-dark() when supported */
199
+ --color-primary: light-dark(#000, #fff);
200
+ --color-primary-dimmed: light-dark(#444, #eee);
201
+ --color-secondary: light-dark(#666, #ccc);
202
+ --color-tertiary: light-dark(#999, #888);
203
+ --color-quaternary: light-dark(#b3b3b3, #666);
204
+ --color-destructive: light-dark(#d73a49, #f85149);
205
+ --color-destructive-dimmed: light-dark(#b31d28, #da3633);
206
+ --color-success: light-dark(#2da44e, #3fb950);
207
+ --color-info: light-dark(#f2994a, #f2994a);
208
+ --accent-color: light-dark(#007bff, #007bff);
209
+ --accent-color-dimmed: light-dark(#0069d9, #0069d9);
210
+
211
+ --border-color: light-dark(#ccc, #333);
212
+ --background-color: light-dark(#fff, #000);
213
+ --alternate-background-color: light-dark(#f5f5f5, #111);
214
+ --highlight-background-color: light-dark(#e5e5e5, #222);
215
+
216
+ --svg-chevron-select: var(--svg-chevron-down);
217
+ }
218
+ }
package/src/styles.css ADDED
@@ -0,0 +1 @@
1
+ @import "./styles/main.css";