@hellboy/ds 0.1.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.
Files changed (137) hide show
  1. package/README.md +111 -0
  2. package/dist/index.css +3699 -0
  3. package/dist/index.css.map +1 -0
  4. package/dist/index.d.mts +1087 -0
  5. package/dist/index.d.ts +1087 -0
  6. package/dist/index.js +3391 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/index.mjs +3287 -0
  9. package/dist/index.mjs.map +1 -0
  10. package/dist/theme.css +55 -0
  11. package/hellboy-ds-0.1.2.tgz +0 -0
  12. package/package.json +42 -0
  13. package/src/components/badge/Badge.tsx +29 -0
  14. package/src/components/badge/index.ts +1 -0
  15. package/src/components/banner/Banner.tsx +48 -0
  16. package/src/components/banner/banner.css +44 -0
  17. package/src/components/banner/index.ts +1 -0
  18. package/src/components/button/button.tsx +127 -0
  19. package/src/components/button/index.ts +1 -0
  20. package/src/components/card/card.tsx +57 -0
  21. package/src/components/card/index.ts +1 -0
  22. package/src/components/checkbox/Checkbox.tsx +98 -0
  23. package/src/components/checkbox/index.ts +1 -0
  24. package/src/components/code-block/code-block.tsx +44 -0
  25. package/src/components/code-block/index.ts +1 -0
  26. package/src/components/color-control/color-control.tsx +322 -0
  27. package/src/components/color-control/index.ts +1 -0
  28. package/src/components/drag-handle/DragHandle.tsx +78 -0
  29. package/src/components/drag-handle/index.ts +1 -0
  30. package/src/components/drawer/drawer.tsx +82 -0
  31. package/src/components/drawer/index.ts +1 -0
  32. package/src/components/floating-bar/floating-bar.tsx +52 -0
  33. package/src/components/floating-bar/index.ts +2 -0
  34. package/src/components/footer/footer.tsx +28 -0
  35. package/src/components/footer/index.ts +1 -0
  36. package/src/components/grid/Grid.tsx +53 -0
  37. package/src/components/grid/index.ts +1 -0
  38. package/src/components/header/header.tsx +57 -0
  39. package/src/components/header/index.ts +1 -0
  40. package/src/components/icons/icons.tsx +44 -0
  41. package/src/components/icons/index.ts +1 -0
  42. package/src/components/index.ts +29 -0
  43. package/src/components/input/DatePicker.tsx +133 -0
  44. package/src/components/input/Input.tsx +220 -0
  45. package/src/components/input/InputDate.tsx +10 -0
  46. package/src/components/input/InputDateTime.tsx +10 -0
  47. package/src/components/input/InputEmail.tsx +10 -0
  48. package/src/components/input/InputField.tsx +137 -0
  49. package/src/components/input/InputNumber.tsx +10 -0
  50. package/src/components/input/InputPassword.tsx +10 -0
  51. package/src/components/input/InputSearch.tsx +10 -0
  52. package/src/components/input/InputTel.tsx +10 -0
  53. package/src/components/input/InputText.tsx +10 -0
  54. package/src/components/input/InputTime.tsx +10 -0
  55. package/src/components/input/InputUrl.tsx +10 -0
  56. package/src/components/input/TimePicker.tsx +151 -0
  57. package/src/components/input/index.ts +11 -0
  58. package/src/components/layout/Layout.tsx +244 -0
  59. package/src/components/layout/index.ts +1 -0
  60. package/src/components/list/List.tsx +159 -0
  61. package/src/components/list/index.ts +1 -0
  62. package/src/components/navbar/MenuCategory.tsx +20 -0
  63. package/src/components/navbar/MenuGroup.tsx +288 -0
  64. package/src/components/navbar/MenuItem.tsx +65 -0
  65. package/src/components/navbar/Navbar.tsx +23 -0
  66. package/src/components/navbar/index.ts +4 -0
  67. package/src/components/page/index.ts +1 -0
  68. package/src/components/page/page.tsx +46 -0
  69. package/src/components/page-index/PageIndex.tsx +275 -0
  70. package/src/components/page-index/index.ts +1 -0
  71. package/src/components/popover/index.ts +1 -0
  72. package/src/components/popover/popover.tsx +199 -0
  73. package/src/components/radio/Radio.tsx +176 -0
  74. package/src/components/radio/index.ts +1 -0
  75. package/src/components/section/index.ts +1 -0
  76. package/src/components/section/section.tsx +66 -0
  77. package/src/components/select/Select.tsx +212 -0
  78. package/src/components/select/index.ts +1 -0
  79. package/src/components/slider/Slider.tsx +267 -0
  80. package/src/components/slider/index.ts +1 -0
  81. package/src/components/switch/index.ts +1 -0
  82. package/src/components/switch/switch.tsx +99 -0
  83. package/src/components/table/Table.tsx +147 -0
  84. package/src/components/table/index.ts +1 -0
  85. package/src/components/theme-control/index.ts +1 -0
  86. package/src/components/theme-control/theme-control.tsx +78 -0
  87. package/src/components/tooltip/index.ts +1 -0
  88. package/src/components/tooltip/tooltip.tsx +207 -0
  89. package/src/contexts/NavbarTooltipContext.tsx +48 -0
  90. package/src/contexts/index.ts +1 -0
  91. package/src/foundations/motion.md +136 -0
  92. package/src/index.ts +40 -0
  93. package/src/style/_shared/field.css +69 -0
  94. package/src/style/components/badge/badge.css +74 -0
  95. package/src/style/components/button/button.css +244 -0
  96. package/src/style/components/card/card.css +69 -0
  97. package/src/style/components/checkbox.css +142 -0
  98. package/src/style/components/code-block/code-block.css +34 -0
  99. package/src/style/components/color-control/color-control.css +126 -0
  100. package/src/style/components/drag-handle/drag-handle.css +68 -0
  101. package/src/style/components/drawer/drawer.css +210 -0
  102. package/src/style/components/floating-bar/floating-bar.css +39 -0
  103. package/src/style/components/footer/footer.css +108 -0
  104. package/src/style/components/grid/grid.css +33 -0
  105. package/src/style/components/header/header.css +44 -0
  106. package/src/style/components/icons/icons.css +44 -0
  107. package/src/style/components/input/input.css +393 -0
  108. package/src/style/components/layout/layout.css +205 -0
  109. package/src/style/components/list/list.css +140 -0
  110. package/src/style/components/navbar/navbar.css +342 -0
  111. package/src/style/components/page/page.css +46 -0
  112. package/src/style/components/page-index/page-index.css +158 -0
  113. package/src/style/components/popover/popover.css +44 -0
  114. package/src/style/components/radio.css +178 -0
  115. package/src/style/components/section/section.css +67 -0
  116. package/src/style/components/select/select.css +143 -0
  117. package/src/style/components/slider/slider.css +159 -0
  118. package/src/style/components/switch/switch.css +267 -0
  119. package/src/style/components/table/table.css +108 -0
  120. package/src/style/components/theme-control/theme-control.css +35 -0
  121. package/src/style/components/tooltip/tooltip.css +52 -0
  122. package/src/style/foundations/global.css +316 -0
  123. package/src/style/foundations/motion.css +164 -0
  124. package/src/style/foundations/spacing.css +51 -0
  125. package/src/style/foundations/typography.css +39 -0
  126. package/src/style/foundations/z-index.css +81 -0
  127. package/src/style/modes/dark.css +146 -0
  128. package/src/style/modes/light.css +147 -0
  129. package/src/style/semantic.css +52 -0
  130. package/src/style/styles.css +51 -0
  131. package/src/style/themes/theme.json +37 -0
  132. package/src/utils/README.md +305 -0
  133. package/src/utils/USER_PREFERENCES.md +558 -0
  134. package/src/utils/theme.ts +127 -0
  135. package/src/utils/user-preferences.ts +577 -0
  136. package/tsconfig.json +25 -0
  137. package/tsup.config.ts +52 -0
@@ -0,0 +1,267 @@
1
+ /**
2
+ * Switch Component Styles
3
+ * Toggle switch with optional icons
4
+ */
5
+
6
+ .switch__wrapper {
7
+ display: inline-flex;
8
+ flex-direction: column;
9
+ gap: var(--spacing-1);
10
+ }
11
+
12
+ .switch__label {
13
+ display: inline-flex;
14
+ align-items: center;
15
+ gap: var(--spacing-2);
16
+ cursor: pointer;
17
+ user-select: none;
18
+ }
19
+
20
+ .switch__input {
21
+ position: absolute;
22
+ opacity: 0;
23
+ width: 0;
24
+ height: 0;
25
+ pointer-events: none;
26
+ }
27
+
28
+ .switch {
29
+ position: relative;
30
+ display: inline-block;
31
+ flex-shrink: 0;
32
+ }
33
+
34
+ .switch__track {
35
+ position: relative;
36
+ display: inline-flex;
37
+ align-items: center;
38
+ border-radius: var(--radius-full);
39
+ background-color: var(--color-bg-1);
40
+ border: none;
41
+ outline: 2px solid var(--color-foreground-3);
42
+ outline-offset: -2px;
43
+ transition: outline-color var(--transition-base), box-shadow var(--transition-base), background-color var(--transition-base);
44
+ overflow: hidden;
45
+ }
46
+
47
+ .switch__thumb {
48
+ position: relative;
49
+ display: inline-flex;
50
+ align-items: center;
51
+ justify-content: center;
52
+ border-radius: 50%;
53
+ background-color: var(--color-action-primary);
54
+ border: 2px solid var(--color-action-primary);
55
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
56
+ transition: transform 0.1s ease, box-shadow 0.1s ease, border-color 0.1s ease, background-color 0.1s ease;
57
+ z-index: 1;
58
+ }
59
+
60
+ .switch__icon {
61
+ position: absolute;
62
+ top: 50%;
63
+ left: 50%;
64
+ transform: translate(-50%, -50%);
65
+ color: var(--color-foreground-2);
66
+ transition: all 0.2s ease;
67
+ opacity: 0;
68
+ pointer-events: none;
69
+ }
70
+
71
+ .switch__icon--on {
72
+ /* Centered in thumb */
73
+ }
74
+
75
+ .switch__icon--off {
76
+ /* Centered in thumb */
77
+ }
78
+
79
+ /* Size variants */
80
+ .switch--sm {
81
+ width: 36px;
82
+ height: 20px;
83
+ }
84
+
85
+ .switch--sm .switch__track {
86
+ width: 36px;
87
+ height: 20px;
88
+ }
89
+
90
+ .switch--sm .switch__thumb {
91
+ width: 14px;
92
+ height: 14px;
93
+ margin: 0 2px;
94
+ }
95
+
96
+ .switch--sm.switch--checked .switch__thumb {
97
+ transform: translateX(16px);
98
+ }
99
+
100
+ .switch--md {
101
+ width: 44px;
102
+ height: 24px;
103
+ }
104
+
105
+ .switch--md .switch__track {
106
+ width: 44px;
107
+ height: 24px;
108
+ }
109
+
110
+ .switch--md .switch__thumb {
111
+ width: 18px;
112
+ height: 18px;
113
+ margin: 0 2px;
114
+ }
115
+
116
+ .switch--md.switch--checked .switch__thumb {
117
+ transform: translateX(20px);
118
+ }
119
+
120
+ .switch--lg {
121
+ width: 52px;
122
+ height: 28px;
123
+ }
124
+
125
+ .switch--lg .switch__track {
126
+ width: 52px;
127
+ height: 28px;
128
+ }
129
+
130
+ .switch--lg .switch__thumb {
131
+ width: 22px;
132
+ height: 22px;
133
+ margin: 0 2px;
134
+ }
135
+
136
+ .switch--lg.switch--checked .switch__thumb {
137
+ transform: translateX(24px);
138
+ }
139
+
140
+ /* Checked state */
141
+ .switch--checked .switch__track {
142
+ background-color: var(--color-accent);
143
+ outline-color: var(--color-accent);
144
+ }
145
+
146
+ .switch--checked .switch__thumb {
147
+ background-color: var(--color-on-accent);
148
+ border-color: var(--color-accent);
149
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
150
+ }
151
+
152
+ /* Hover/Focus states */
153
+ .switch__input:hover + .switch__track {
154
+ outline-color: var(--color-action-primary-hover);
155
+ }
156
+
157
+ .switch__input:focus + .switch__track {
158
+ outline-color: var(--color-action-primary);
159
+ box-shadow: 0 0 0 3px hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness), 0.1);
160
+ }
161
+
162
+ .switch__input:hover + .switch__track .switch__thumb,
163
+ .switch__input:focus + .switch__track .switch__thumb {
164
+ border-color: var(--color-action-primary-hover);
165
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.4);
166
+ }
167
+
168
+ .switch--checked .switch__input:hover + .switch__track {
169
+ outline-color: var(--color-accent);
170
+ }
171
+
172
+ .switch--checked .switch__input:focus + .switch__track {
173
+ outline-color: var(--color-accent);
174
+ box-shadow: 0 0 0 3px hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness), 0.1);
175
+ }
176
+
177
+ .switch--checked .switch__input:hover + .switch__track .switch__thumb,
178
+ .switch--checked .switch__input:focus + .switch__track .switch__thumb {
179
+ border-color: var(--color-accent);
180
+ }
181
+
182
+ /* Active state */
183
+ .switch__input:active + .switch__track .switch__thumb {
184
+ transform: scale(1.2);
185
+ border-color: var(--color-action-primary-active);
186
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.5);
187
+ }
188
+
189
+ .switch--checked .switch__input:active + .switch__track .switch__thumb {
190
+ border-color: var(--color-accent);
191
+ }
192
+
193
+ .switch--checked .switch__icon--on {
194
+ opacity: 1;
195
+ color: var(--color-accent);
196
+ }
197
+
198
+ .switch--checked .switch__icon--off {
199
+ opacity: 0;
200
+ }
201
+
202
+ /* Unchecked state - show off icon if present */
203
+ .switch:not(.switch--checked) .switch__icon--off {
204
+ opacity: 1;
205
+ color: var(--color-foreground-2);
206
+ }
207
+
208
+ .switch:not(.switch--checked) .switch__icon--on {
209
+ opacity: 0;
210
+ }
211
+
212
+ /* Disabled state */
213
+ .switch--disabled {
214
+ opacity: 0.5;
215
+ cursor: not-allowed;
216
+ }
217
+
218
+ .switch--disabled .switch__label {
219
+ cursor: not-allowed;
220
+ }
221
+
222
+ .switch--disabled .switch__thumb {
223
+ border-color: var(--color-foreground-3);
224
+ background-color: var(--color-bg-3);
225
+ opacity: 0.6;
226
+ }
227
+
228
+ /* Error state */
229
+ .switch--error .switch__track {
230
+ outline-color: var(--color-error);
231
+ }
232
+
233
+ .switch--error.switch--checked .switch__track {
234
+ background-color: var(--color-error);
235
+ outline-color: var(--color-error);
236
+ }
237
+
238
+ /* Text and messages */
239
+ .switch__text {
240
+ font-size: var(--font-size-sm);
241
+ color: var(--color-foreground-1);
242
+ line-height: 1.5;
243
+ }
244
+
245
+ .switch__message {
246
+ margin-top: var(--spacing-1);
247
+ }
248
+
249
+ .switch__error-text {
250
+ font-size: var(--font-size-xs);
251
+ color: var(--color-error);
252
+ }
253
+
254
+ .switch__helper-text {
255
+ font-size: var(--font-size-xs);
256
+ color: var(--color-foreground-3);
257
+ }
258
+
259
+ /* Dark theme adjustments */
260
+ :root[data-theme="dark"] .switch__track {
261
+ background-color: var(--color-bg-2);
262
+ outline-color: var(--color-foreground-4);
263
+ }
264
+
265
+ :root[data-theme="dark"] .switch:not(.switch--checked) .switch__icon--off {
266
+ color: var(--color-foreground-4);
267
+ }
@@ -0,0 +1,108 @@
1
+ /* table.css */
2
+
3
+ .table {
4
+ width: 100%;
5
+ border-collapse: collapse;
6
+ font-size: var(--font-size-sm);
7
+ line-height: var(--line-height-normal);
8
+ }
9
+
10
+ /* Size variants */
11
+ .table--sm {
12
+ font-size: var(--font-size-xs);
13
+ }
14
+
15
+ .table--sm .table__cell,
16
+ .table--sm .table__cell--header {
17
+ padding: var(--spacing-2) var(--spacing-3);
18
+ }
19
+
20
+ .table--md .table__cell,
21
+ .table--md .table__cell--header {
22
+ padding: var(--spacing-3) var(--spacing-4);
23
+ }
24
+
25
+ .table--lg .table__cell,
26
+ .table--lg .table__cell--header {
27
+ padding: var(--spacing-4) var(--spacing-6);
28
+ }
29
+
30
+ /* Default padding for md size */
31
+ .table__cell,
32
+ .table__cell--header {
33
+ padding: var(--spacing-3) var(--spacing-4);
34
+ text-align: left;
35
+ vertical-align: top;
36
+ }
37
+
38
+ .table__cell--header {
39
+ font-weight: var(--font-weight-semibold);
40
+ background-color: var(--color-bg-2);
41
+ border-bottom: 1px solid var(--color-foreground-2);
42
+ color: var(--color-foreground-1);
43
+ }
44
+
45
+ .table__cell {
46
+ color: var(--color-foreground-1);
47
+ border-bottom: 1px solid var(--color-foreground-2);
48
+ border-bottom-color: rgba(0, 0, 0, 0.1);
49
+ transition: background-color var(--transition-base, 0.2s ease);
50
+ }
51
+
52
+ .table__row:hover .table__cell:not(.table__cell--header) {
53
+ background-color: transparent;
54
+ }
55
+
56
+ /* Bordered variant */
57
+ .table--bordered {
58
+ border: 1px solid var(--color-foreground-2);
59
+ border-color: rgba(0, 0, 0, 0.1);
60
+ }
61
+
62
+ .table--bordered .table__cell,
63
+ .table--bordered .table__cell--header {
64
+ border-right: 1px solid var(--color-foreground-2);
65
+ border-right-color: rgba(0, 0, 0, 0.1);
66
+ }
67
+
68
+ .table--bordered .table__cell:last-child,
69
+ .table--bordered .table__cell--header:last-child {
70
+ border-right: none;
71
+ }
72
+
73
+ .table--bordered .table__row:last-child .table__cell {
74
+ border-bottom: none;
75
+ }
76
+
77
+ /* Striped variant - zebra pattern using background color variations */
78
+ .table--striped tbody .table__row:nth-child(odd) {
79
+ background-color: var(--color-bg-3);
80
+ }
81
+
82
+ .table--striped tbody .table__row:nth-child(even) {
83
+ background-color: var(--color-bg-2);
84
+ }
85
+
86
+ .table--striped tbody .table__row:nth-child(even) .table__cell {
87
+ background-color: transparent;
88
+ }
89
+
90
+ .table--striped tbody .table__row:nth-child(odd) .table__cell {
91
+ background-color: transparent;
92
+ }
93
+
94
+ /* Hover variant */
95
+ .table--hover tbody .table__row:hover {
96
+ background-color: var(--color-bg-2);
97
+ transition: background-color var(--motion-duration-fast) var(--motion-easing-standard);
98
+ }
99
+
100
+ .table--hover tbody .table__row:hover .table__cell {
101
+ background-color: transparent;
102
+ }
103
+
104
+ /* Responsive wrapper */
105
+ .table-container {
106
+ overflow-x: auto;
107
+ margin: var(--spacing-4) 0;
108
+ }
@@ -0,0 +1,35 @@
1
+ .theme-control {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: var(--spacing-2, 0.5rem);
5
+ }
6
+
7
+ .theme-control__option {
8
+ display: flex;
9
+ align-items: center;
10
+ gap: var(--spacing-3, 0.75rem);
11
+ padding: var(--spacing-2, 0.5rem);
12
+ border-radius: var(--border-radius-sm, 4px);
13
+ cursor: pointer;
14
+ transition: all var(--transition-base, 0.2s ease);
15
+ color: var(--color-foreground-1);
16
+ }
17
+
18
+ .theme-control__option:hover:not(:disabled) {
19
+ background: var(--color-bg-2);
20
+ }
21
+
22
+ .theme-control__option:focus-visible:not(:disabled) {
23
+ outline: 2px solid var(--color-action-primary);
24
+ outline-offset: 2px;
25
+ }
26
+
27
+ .theme-control__option--active {
28
+ background: var(--color-action-primary);
29
+ color: var(--color-on-action-primary);
30
+ }
31
+
32
+ .theme-control__icon {
33
+ width: 20px;
34
+ height: 20px;
35
+ }
@@ -0,0 +1,52 @@
1
+ /* Tooltip Component Styles */
2
+
3
+ .tooltip {
4
+ position: fixed; /* Ensure fixed positioning for portal */
5
+ background: var(--color-bg-1);
6
+ border: 1px solid var(--color-bg-3);
7
+ border-color: rgba(0, 0, 0, 0.15);
8
+ border-radius: var(--radius-base);
9
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
10
+ max-width: 200px;
11
+ padding: var(--spacing-2, 0.5rem) var(--spacing-3, 0.75rem);
12
+ font-size: var(--font-size-xs, 0.75rem);
13
+ font-weight: 500;
14
+ color: var(--color-foreground-1);
15
+ white-space: nowrap;
16
+ animation: tooltip-fade-in var(--transition-fast, 0.15s ease);
17
+ /* Prevent initial flash by starting hidden */
18
+ opacity: 0;
19
+ visibility: hidden;
20
+ pointer-events: none;
21
+ }
22
+
23
+ .tooltip--top {
24
+ margin-bottom: var(--spacing-1);
25
+ }
26
+
27
+ .tooltip--bottom {
28
+ margin-top: var(--spacing-1);
29
+ }
30
+
31
+ .tooltip--left {
32
+ margin-right: var(--spacing-1);
33
+ }
34
+
35
+ .tooltip--right {
36
+ margin-left: var(--spacing-1);
37
+ }
38
+
39
+ @keyframes tooltip-fade-in {
40
+ from {
41
+ opacity: 0;
42
+ transform: translateY(-2px);
43
+ }
44
+ to {
45
+ opacity: 1;
46
+ transform: translateY(0);
47
+ }
48
+ }
49
+
50
+ .tooltip__content {
51
+ /* Additional styling if needed */
52
+ }