@altruist03/ui 0.1.0 → 0.2.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 (207) hide show
  1. package/assets/images/noData.webp +0 -0
  2. package/dist/index.js +15237 -650
  3. package/dist/index.js.map +1 -1
  4. package/dist/noData-XPRHKMFR.webp +0 -0
  5. package/package.json +21 -7
  6. package/src/ThemeProvider/ThemeContext.tsx +75 -0
  7. package/src/ThemeProvider/index.ts +7 -0
  8. package/src/assets/images/noData.webp +0 -0
  9. package/src/assets.d.ts +10 -0
  10. package/src/components/Accordion/Accordion.stories.tsx +64 -0
  11. package/src/components/Accordion/Accordion.tsx +219 -0
  12. package/src/components/Accordion/Accordion.types.ts +16 -0
  13. package/src/components/Avatar/Avatar.stories.tsx +304 -0
  14. package/src/components/Avatar/Avatar.tsx +211 -0
  15. package/src/components/Avatar/Avatar.types.ts +33 -0
  16. package/src/components/Badge/Badge.stories.tsx +143 -0
  17. package/src/components/Badge/Badge.tsx +138 -0
  18. package/src/components/Badge/Badge.types.ts +24 -0
  19. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +114 -0
  20. package/src/components/Breadcrumb/Breadcrumb.tsx +120 -0
  21. package/src/components/Breadcrumb/Breadcrumb.types.ts +22 -0
  22. package/src/components/Button/Button.stories.tsx +457 -0
  23. package/src/components/Button/Button.tsx +202 -0
  24. package/src/components/Button/Button.types.ts +18 -0
  25. package/src/components/Checkbox/Checkbox.stories.tsx +254 -0
  26. package/src/components/Checkbox/Checkbox.tsx +352 -0
  27. package/src/components/Checkbox/Checkbox.types.ts +123 -0
  28. package/src/components/CloseButton/CloseButton.stories.tsx +100 -0
  29. package/src/components/CloseButton/CloseButton.tsx +117 -0
  30. package/src/components/CloseButton/CloseButton.types.ts +15 -0
  31. package/src/components/CollapsibleSearch/CollapsibleSearch.tsx +120 -0
  32. package/src/components/DataTable/DataTable.stories.tsx +233 -0
  33. package/src/components/DataTable/DataTable.tsx +968 -0
  34. package/src/components/DataTable/DataTable.types.ts +49 -0
  35. package/src/components/DatePicker/DatePicker.stories.tsx +341 -0
  36. package/src/components/DatePicker/DatePicker.tsx +669 -0
  37. package/src/components/DatePicker/DatePicker.types.ts +105 -0
  38. package/src/components/DatePicker/DateTimePicker.tsx +35 -0
  39. package/src/components/DateRangePicker/DateRangePicker.tsx +179 -0
  40. package/src/components/DateRangePicker/DateRangePicker.types.ts +34 -0
  41. package/src/components/Drawer/Drawer.stories.tsx +243 -0
  42. package/src/components/Drawer/Drawer.tsx +196 -0
  43. package/src/components/Drawer/Drawer.types.ts +60 -0
  44. package/src/components/FileUpload/FileUpload.stories.tsx +162 -0
  45. package/src/components/FileUpload/FileUpload.tsx +216 -0
  46. package/src/components/FileUpload/FileUpload.types.ts +80 -0
  47. package/src/components/FilterPopover/FilterPopover.stories.tsx +173 -0
  48. package/src/components/FilterPopover/FilterPopover.tsx +310 -0
  49. package/src/components/FilterPopover/FilterPopover.types.ts +26 -0
  50. package/src/components/ImageViewer/ImageViewerToolbar.jsx +81 -0
  51. package/src/components/ImageViewer/useImagePanRotate.js +102 -0
  52. package/src/components/IpWhitelistField/IpWhitelistField.stories.tsx +138 -0
  53. package/src/components/IpWhitelistField/IpWhitelistField.tsx +164 -0
  54. package/src/components/IpWhitelistField/IpWhitelistField.types.ts +42 -0
  55. package/src/components/Loader/Loader.stories.tsx +95 -0
  56. package/src/components/Loader/Loader.tsx +132 -0
  57. package/src/components/Loader/Loader.types.ts +6 -0
  58. package/src/components/Menu/Menu.tsx +143 -0
  59. package/src/components/Menu/Menu.types.ts +28 -0
  60. package/src/components/MenuButton/MenuButton.stories.tsx +140 -0
  61. package/src/components/MenuButton/MenuButton.tsx +45 -0
  62. package/src/components/MenuButton/MenuButton.types.ts +21 -0
  63. package/src/components/Modal/Modal.stories.tsx +266 -0
  64. package/src/components/Modal/Modal.tsx +399 -0
  65. package/src/components/Modal/index.ts +2 -0
  66. package/src/components/Modal/types.ts +126 -0
  67. package/src/components/Pagination/Pagination.stories.tsx +167 -0
  68. package/src/components/Pagination/Pagination.tsx +266 -0
  69. package/src/components/Pagination/Pagination.types.ts +20 -0
  70. package/src/components/PeriodSelector/PeriodSelector.stories.tsx +50 -0
  71. package/src/components/PeriodSelector/PeriodSelector.tsx +47 -0
  72. package/src/components/PeriodSelector/PeriodSelector.types.ts +10 -0
  73. package/src/components/PhoneField/PhoneField.stories.tsx +141 -0
  74. package/src/components/PhoneField/PhoneField.tsx +284 -0
  75. package/src/components/PhoneField/PhoneField.types.ts +89 -0
  76. package/src/components/PhoneField/countryCodes.ts +236 -0
  77. package/src/components/Progress/Progress.stories.tsx +83 -0
  78. package/src/components/Progress/Progress.tsx +91 -0
  79. package/src/components/Progress/Progress.types.ts +22 -0
  80. package/src/components/RadioButton/RadioButton.stories.tsx +332 -0
  81. package/src/components/RadioButton/RadioButton.tsx +427 -0
  82. package/src/components/RadioButton/RadioButton.types.ts +117 -0
  83. package/src/components/ReportCard/ReportCard.tsx +183 -0
  84. package/src/components/ReportCard/ReportCard.types.ts +17 -0
  85. package/src/components/SectionIcon/SectionIcon.tsx +87 -0
  86. package/src/components/SectionIcon/SectionIcon.types.ts +23 -0
  87. package/src/components/SegmentedInputField/SegmentedInputField.stories.tsx +165 -0
  88. package/src/components/SegmentedInputField/SegmentedInputField.tsx +174 -0
  89. package/src/components/SegmentedInputField/SegmentedInputField.types.ts +51 -0
  90. package/src/components/SelectScroll/SelectScroll.stories.tsx +336 -0
  91. package/src/components/SelectScroll/SelectScroll.tsx +1119 -0
  92. package/src/components/SelectScroll/SelectScroll.types.ts +60 -0
  93. package/src/components/Selector/Selector.stories.tsx +382 -0
  94. package/src/components/Selector/Selector.tsx +1310 -0
  95. package/src/components/Selector/Selector.types.ts +71 -0
  96. package/src/components/Skeleton/Skeleton.stories.tsx +133 -0
  97. package/src/components/Skeleton/Skeleton.tsx +20 -0
  98. package/src/components/Skeleton/Skeleton.types.ts +3 -0
  99. package/src/components/Spinner/Spinner.stories.tsx +84 -0
  100. package/src/components/Spinner/Spinner.tsx +79 -0
  101. package/src/components/Spinner/Spinner.types.ts +8 -0
  102. package/src/components/StatCard/StatCard.stories.tsx +125 -0
  103. package/src/components/StatCard/StatCard.tsx +167 -0
  104. package/src/components/StatCard/StatCard.types.ts +20 -0
  105. package/src/components/StatusBadge/StatusBadge.stories.tsx +179 -0
  106. package/src/components/StatusBadge/StatusBadge.tsx +74 -0
  107. package/src/components/StatusBadge/StatusBadge.types.ts +23 -0
  108. package/src/components/Stepper/Stepper.stories.tsx +85 -0
  109. package/src/components/Stepper/Stepper.tsx +138 -0
  110. package/src/components/Stepper/Stepper.types.ts +16 -0
  111. package/src/components/SubTabs/SubTabs.stories.tsx +128 -0
  112. package/src/components/SubTabs/SubTabs.tsx +279 -0
  113. package/src/components/SubTabs/SubTabs.types.ts +44 -0
  114. package/src/components/SummaryCard/SummaryCard.stories.tsx +100 -0
  115. package/src/components/SummaryCard/SummaryCard.tsx +141 -0
  116. package/src/components/SummaryCard/SummaryCard.types.ts +22 -0
  117. package/src/components/Switch/Switch.stories.tsx +59 -0
  118. package/src/components/Switch/Switch.tsx +217 -0
  119. package/src/components/Switch/Switch.types.ts +22 -0
  120. package/src/components/Tabs/Tabs.stories.tsx +178 -0
  121. package/src/components/Tabs/Tabs.tsx +197 -0
  122. package/src/components/Tabs/Tabs.types.ts +34 -0
  123. package/src/components/TextField/TextField.stories.tsx +249 -0
  124. package/src/components/TextField/TextField.tsx +462 -0
  125. package/src/components/TextField/TextField.types.ts +141 -0
  126. package/src/components/Toast/Toast.stories.tsx +237 -0
  127. package/src/components/Toast/Toast.tsx +246 -0
  128. package/src/components/Toast/Toast.types.ts +31 -0
  129. package/src/components/ToggleButton/ToggleButton.stories.tsx +105 -0
  130. package/src/components/ToggleButton/ToggleButton.tsx +267 -0
  131. package/src/components/ToggleButton/ToggleButton.types.ts +19 -0
  132. package/src/components/UploadDropzone/UploadDropzone.jsx +78 -0
  133. package/src/components/UploadDropzone2/UploadDropzone.stories.tsx +94 -0
  134. package/src/components/UploadDropzone2/UploadDropzone.tsx +222 -0
  135. package/src/components/UploadDropzone2/UploadDropzone.types.ts +54 -0
  136. package/src/components/ViewEditToggle/ViewEditToggle.stories.tsx +40 -0
  137. package/src/components/ViewEditToggle/ViewEditToggle.tsx +239 -0
  138. package/src/components/ViewEditToggle/ViewEditToggle.types.ts +27 -0
  139. package/src/components/index.ts +157 -0
  140. package/src/icons/ReportDollarIcon.tsx +71 -0
  141. package/src/icons/index.ts +27 -0
  142. package/src/index.ts +214 -0
  143. package/src/storybook/preview.tsx +64 -0
  144. package/src/theme/index.ts +4 -0
  145. package/src/theme/types.d.ts +1 -0
  146. package/src/themes/cpc.ts +4 -0
  147. package/src/themes/firebird.ts +4 -0
  148. package/src/tokens/brands/cpc/themes/dark.json +82 -0
  149. package/src/tokens/brands/cpc/themes/light.json +1 -0
  150. package/src/tokens/brands/default/brand.json +20 -0
  151. package/src/tokens/brands/firebird/themes/dark.json +28 -0
  152. package/src/tokens/brands/firebird/themes/light.json +20 -0
  153. package/src/tokens/button.ts +24 -0
  154. package/src/tokens/components/accordion.json +52 -0
  155. package/src/tokens/components/avatar.json +40 -0
  156. package/src/tokens/components/badge.json +41 -0
  157. package/src/tokens/components/breadcrumb.json +13 -0
  158. package/src/tokens/components/button.json +67 -0
  159. package/src/tokens/components/card.json +39 -0
  160. package/src/tokens/components/checkbox.json +64 -0
  161. package/src/tokens/components/closebutton.json +55 -0
  162. package/src/tokens/components/datatable.json +40 -0
  163. package/src/tokens/components/datepicker.json +99 -0
  164. package/src/tokens/components/drawer.json +23 -0
  165. package/src/tokens/components/field.json +29 -0
  166. package/src/tokens/components/fileupload.json +57 -0
  167. package/src/tokens/components/filterpopover.json +29 -0
  168. package/src/tokens/components/input.json +31 -0
  169. package/src/tokens/components/ipwhitelistfield.json +16 -0
  170. package/src/tokens/components/loader.json +15 -0
  171. package/src/tokens/components/menu.json +21 -0
  172. package/src/tokens/components/modal.json +25 -0
  173. package/src/tokens/components/pagination.json +45 -0
  174. package/src/tokens/components/phonefield.json +41 -0
  175. package/src/tokens/components/progress.json +12 -0
  176. package/src/tokens/components/radio.json +87 -0
  177. package/src/tokens/components/reportcard.json +17 -0
  178. package/src/tokens/components/selector.json +87 -0
  179. package/src/tokens/components/selectscroll.json +65 -0
  180. package/src/tokens/components/skeleton.json +6 -0
  181. package/src/tokens/components/stepper.json +38 -0
  182. package/src/tokens/components/subtabs.json +45 -0
  183. package/src/tokens/components/switch.json +55 -0
  184. package/src/tokens/components/tabs.json +38 -0
  185. package/src/tokens/components/textfield.json +59 -0
  186. package/src/tokens/components/togglebutton.json +48 -0
  187. package/src/tokens/components/uploaddropzone.json +61 -0
  188. package/src/tokens/drawer.ts +37 -0
  189. package/src/tokens/foundation/breakpoints.json +10 -0
  190. package/src/tokens/foundation/colors.json +122 -0
  191. package/src/tokens/foundation/opacity.json +16 -0
  192. package/src/tokens/foundation/radius.json +14 -0
  193. package/src/tokens/foundation/size.json +38 -0
  194. package/src/tokens/foundation/spacing.json +19 -0
  195. package/src/tokens/foundation/typography.json +43 -0
  196. package/src/tokens/index.ts +3665 -0
  197. package/src/tokens/modal.ts +42 -0
  198. package/src/tokens/semantic/color.json +148 -0
  199. package/src/tokens/semantic/field.json +28 -0
  200. package/src/tokens/semantic/opacity.json +5 -0
  201. package/src/tokens/semantic/size.json +722 -0
  202. package/src/tokens/semantic/spacing.json +27 -0
  203. package/src/tokens/semantic/typography.json +87 -0
  204. package/src/utils/scrollLock.ts +44 -0
  205. package/dist/index.css +0 -514
  206. package/dist/index.css.map +0 -1
  207. package/dist/index.d.ts +0 -289
@@ -0,0 +1,27 @@
1
+ {
2
+ "spacing": {
3
+ "layout": {
4
+ "xs": "{spacing.1}",
5
+ "sm": "{spacing.2}",
6
+ "md": "{spacing.3}",
7
+ "lg": "{spacing.4}",
8
+ "xl": "{spacing.6}",
9
+ "2xl": "{spacing.7}"
10
+ },
11
+ "component": {
12
+ "xxs": "{spacing.1_5}",
13
+ "xs": "{spacing.1}",
14
+ "sm": "{spacing.2}",
15
+ "md": "{spacing.3}",
16
+ "lg": "{spacing.4}",
17
+ "xl": "{spacing.5}"
18
+ },
19
+ "section": {
20
+ "xs": "{spacing.4}",
21
+ "sm": "{spacing.6}",
22
+ "md": "{spacing.7}",
23
+ "lg": "{spacing.9}",
24
+ "xl": "{spacing.10}"
25
+ }
26
+ }
27
+ }
@@ -0,0 +1,87 @@
1
+ {
2
+ "typography": {
3
+ "heading": {
4
+ "h1": {
5
+ "fontFamily": "{typography.fontFamily.sans}",
6
+ "fontSize": "{typography.fontSize.3xl}",
7
+ "fontWeight": "{typography.fontWeight.bold}",
8
+ "lineHeight": "{typography.lineHeight.tight}"
9
+ },
10
+ "h2": {
11
+ "fontFamily": "{typography.fontFamily.sans}",
12
+ "fontSize": "{typography.fontSize.2xl}",
13
+ "fontWeight": "{typography.fontWeight.bold}",
14
+ "lineHeight": "{typography.lineHeight.tight}"
15
+ },
16
+ "h3": {
17
+ "fontFamily": "{typography.fontFamily.sans}",
18
+ "fontSize": "{typography.fontSize.xl}",
19
+ "fontWeight": "{typography.fontWeight.semibold}",
20
+ "lineHeight": "{typography.lineHeight.snug}"
21
+ },
22
+ "h4": {
23
+ "fontFamily": "{typography.fontFamily.sans}",
24
+ "fontSize": "{typography.fontSize.lg}",
25
+ "fontWeight": "{typography.fontWeight.semibold}",
26
+ "lineHeight": "{typography.lineHeight.normal}"
27
+ }
28
+ },
29
+ "body": {
30
+ "large": {
31
+ "fontFamily": "{typography.fontFamily.sans}",
32
+ "fontSize": "{typography.fontSize.md}",
33
+ "fontWeight": "{typography.fontWeight.normal}",
34
+ "lineHeight": "{typography.lineHeight.relaxed}"
35
+ },
36
+ "medium": {
37
+ "fontFamily": "{typography.fontFamily.sans}",
38
+ "fontSize": "{typography.fontSize.base}",
39
+ "fontWeight": "{typography.fontWeight.normal}",
40
+ "lineHeight": "{typography.lineHeight.normal}"
41
+ },
42
+ "small": {
43
+ "fontFamily": "{typography.fontFamily.sans}",
44
+ "fontSize": "{typography.fontSize.sm}",
45
+ "fontWeight": "{typography.fontWeight.normal}",
46
+ "lineHeight": "{typography.lineHeight.normal}"
47
+ },
48
+ "xsmall": {
49
+ "fontFamily": "{typography.fontFamily.sans}",
50
+ "fontSize": "{typography.fontSize.xs}",
51
+ "fontWeight": "{typography.fontWeight.normal}",
52
+ "lineHeight": "{typography.lineHeight.normal}"
53
+ }
54
+ },
55
+ "label": {
56
+ "large": {
57
+ "fontFamily": "{typography.fontFamily.sans}",
58
+ "fontSize": "{typography.fontSize.md}",
59
+ "fontWeight": "{typography.fontWeight.medium}",
60
+ "lineHeight": "{typography.lineHeight.normal}"
61
+ },
62
+ "medium": {
63
+ "fontFamily": "{typography.fontFamily.sans}",
64
+ "fontSize": "{typography.fontSize.base}",
65
+ "fontWeight": "{typography.fontWeight.medium}",
66
+ "lineHeight": "{typography.lineHeight.normal}"
67
+ },
68
+ "small": {
69
+ "fontFamily": "{typography.fontFamily.sans}",
70
+ "fontSize": "{typography.fontSize.xs}",
71
+ "fontWeight": "{typography.fontWeight.medium}",
72
+ "lineHeight": "{typography.lineHeight.normal}"
73
+ }
74
+ },
75
+ "icon": {
76
+ "size": {
77
+ "fontSize": "{typography.fontSize.2xl}"
78
+ }
79
+ },
80
+ "radio": {
81
+ "label": {
82
+ "fontFamily": "{typography.fontFamily.sans}",
83
+ "fontWeight": "{typography.fontWeight.semibold}"
84
+ }
85
+ }
86
+ }
87
+ }
@@ -0,0 +1,44 @@
1
+ let lockCount = 0;
2
+ let originalOverflow = '';
3
+ let originalPaddingRight = '';
4
+
5
+ /**
6
+ * Gets the width of the scrollbar in pixels.
7
+ */
8
+ function getScrollbarWidth() {
9
+ if (typeof window === 'undefined') return 0;
10
+ return window.innerWidth - document.documentElement.clientWidth;
11
+ }
12
+
13
+ /**
14
+ * Locks the body scroll and adds padding to prevent layout shift.
15
+ */
16
+ export function lockScroll() {
17
+ if (typeof document === 'undefined') return;
18
+
19
+ if (lockCount === 0) {
20
+ const scrollbarWidth = getScrollbarWidth();
21
+ originalOverflow = document.body.style.overflow;
22
+ originalPaddingRight = document.body.style.paddingRight;
23
+
24
+ document.body.style.overflow = 'hidden';
25
+ if (scrollbarWidth > 0) {
26
+ const currentPadding = parseFloat(getComputedStyle(document.body).paddingRight) || 0;
27
+ document.body.style.paddingRight = `${currentPadding + scrollbarWidth}px`;
28
+ }
29
+ }
30
+ lockCount++;
31
+ }
32
+
33
+ /**
34
+ * Unlocks the body scroll if no more locks are active.
35
+ */
36
+ export function unlockScroll() {
37
+ if (typeof document === 'undefined') return;
38
+
39
+ lockCount = Math.max(0, lockCount - 1);
40
+ if (lockCount === 0) {
41
+ document.body.style.overflow = originalOverflow;
42
+ document.body.style.paddingRight = originalPaddingRight;
43
+ }
44
+ }
package/dist/index.css DELETED
@@ -1,514 +0,0 @@
1
- /* src/styles.css */
2
- :root {
3
- --al-color-primary: #0b6b4f;
4
- --al-color-primary-hover: #095c44;
5
- --al-color-on-primary: #ffffff;
6
- --al-color-secondary: #1f2937;
7
- --al-color-on-secondary: #ffffff;
8
- --al-color-danger: #b42318;
9
- --al-color-success: #067647;
10
- --al-color-warning: #b54708;
11
- --al-color-text: #1c2430;
12
- --al-color-text-muted: #5c6778;
13
- --al-color-surface: #ffffff;
14
- --al-color-surface-muted: #f5f7fa;
15
- --al-color-border: #d8dee8;
16
- --al-color-focus: #0b6b4f;
17
- --al-font-family:
18
- "Segoe UI",
19
- "Noto Sans",
20
- sans-serif;
21
- --al-font-size-xs: 12px;
22
- --al-font-size-sm: 13px;
23
- --al-font-size-md: 14px;
24
- --al-font-size-lg: 16px;
25
- --al-radius-sm: 6px;
26
- --al-radius-md: 8px;
27
- --al-radius-lg: 12px;
28
- --al-space-sm: 8px;
29
- --al-space-md: 12px;
30
- --al-space-lg: 16px;
31
- }
32
- .al-btn {
33
- display: inline-flex;
34
- align-items: center;
35
- justify-content: center;
36
- gap: 8px;
37
- box-sizing: border-box;
38
- height: 36px;
39
- padding: 0 14px;
40
- border-radius: var(--al-radius-md);
41
- border: 1px solid transparent;
42
- background: var(--al-btn-bg, var(--al-color-primary));
43
- color: var(--al-btn-fg, var(--al-color-on-primary));
44
- font-family: var(--al-font-family);
45
- font-size: var(--al-font-size-md);
46
- font-weight: 600;
47
- line-height: 1;
48
- cursor: pointer;
49
- transition:
50
- background-color 0.15s ease,
51
- border-color 0.15s ease,
52
- color 0.15s ease;
53
- }
54
- .al-btn[data-size=sm] {
55
- height: 30px;
56
- padding: 0 10px;
57
- font-size: var(--al-font-size-sm);
58
- }
59
- .al-btn[data-size=lg] {
60
- height: 42px;
61
- padding: 0 18px;
62
- font-size: var(--al-font-size-lg);
63
- }
64
- .al-btn[data-full-width=true] {
65
- width: 100%;
66
- }
67
- .al-btn[data-variant=outline],
68
- .al-btn[data-variant=ghost] {
69
- color: var(--al-btn-bg, var(--al-color-primary));
70
- background: transparent;
71
- }
72
- .al-btn[data-variant=outline] {
73
- border-color: var(--al-btn-bg, var(--al-color-primary));
74
- }
75
- .al-btn[data-variant=solid]:hover:not(:disabled) {
76
- background: color-mix(in srgb, var(--al-btn-bg, var(--al-color-primary)) 86%, #000);
77
- }
78
- .al-btn[data-variant=outline]:hover:not(:disabled) {
79
- background: color-mix(in srgb, var(--al-btn-bg, var(--al-color-primary)) 12%, transparent);
80
- }
81
- .al-btn[data-variant=ghost]:hover:not(:disabled) {
82
- background: var(--al-color-surface-muted);
83
- }
84
- .al-btn:focus-visible,
85
- .al-control:focus-visible,
86
- .al-checkbox-input:focus-visible {
87
- outline: 2px solid var(--al-color-focus);
88
- outline-offset: 2px;
89
- }
90
- .al-btn:disabled {
91
- opacity: 0.55;
92
- cursor: not-allowed;
93
- }
94
- .al-spinner {
95
- width: 1em;
96
- height: 1em;
97
- border: 2px solid currentColor;
98
- border-right-color: transparent;
99
- border-radius: 50%;
100
- animation: al-spin 0.6s linear infinite;
101
- }
102
- @keyframes al-spin {
103
- to {
104
- transform: rotate(360deg);
105
- }
106
- }
107
- @media (prefers-reduced-motion: reduce) {
108
- .al-spinner {
109
- animation: none;
110
- }
111
- }
112
- .al-field,
113
- .al-checkbox-field {
114
- display: flex;
115
- flex-direction: column;
116
- gap: 6px;
117
- min-width: 0;
118
- font-family: var(--al-font-family);
119
- color: var(--al-color-text);
120
- }
121
- .al-field-label,
122
- .al-checkbox-label {
123
- font-size: var(--al-font-size-sm);
124
- font-weight: 600;
125
- color: var(--al-color-text);
126
- }
127
- .al-field-required {
128
- margin-left: 2px;
129
- color: var(--al-color-danger);
130
- }
131
- .al-control-wrap {
132
- position: relative;
133
- display: flex;
134
- align-items: center;
135
- }
136
- .al-control {
137
- box-sizing: border-box;
138
- width: 100%;
139
- height: 36px;
140
- padding: 0 12px;
141
- border: 1px solid var(--al-control-border, var(--al-color-border));
142
- border-radius: var(--al-radius-md);
143
- background: var(--al-color-surface);
144
- color: var(--al-color-text);
145
- font-family: inherit;
146
- font-size: var(--al-font-size-md);
147
- }
148
- .al-control[data-size=sm] {
149
- height: 30px;
150
- font-size: var(--al-font-size-sm);
151
- }
152
- .al-control[data-size=lg] {
153
- height: 42px;
154
- font-size: var(--al-font-size-lg);
155
- }
156
- .al-control::placeholder {
157
- color: var(--al-color-text-muted);
158
- }
159
- .al-control:focus {
160
- border-color: var(--al-control-accent, var(--al-color-focus));
161
- }
162
- .al-control[aria-invalid=true] {
163
- border-color: var(--al-color-danger);
164
- }
165
- .al-control:disabled {
166
- background: var(--al-color-surface-muted);
167
- color: var(--al-color-text-muted);
168
- cursor: not-allowed;
169
- }
170
- .has-left .al-control {
171
- padding-left: 36px;
172
- }
173
- .has-right .al-control {
174
- padding-right: 36px;
175
- }
176
- .al-control-icon {
177
- position: absolute;
178
- display: inline-flex;
179
- color: var(--al-color-text-muted);
180
- }
181
- .al-control-icon.left {
182
- left: 10px;
183
- }
184
- .al-control-icon.right {
185
- right: 8px;
186
- }
187
- .al-textarea {
188
- height: auto;
189
- min-height: 96px;
190
- padding: 10px 12px;
191
- resize: vertical;
192
- line-height: 1.45;
193
- }
194
- .al-select {
195
- appearance: none;
196
- padding-right: 32px;
197
- background-image:
198
- linear-gradient(
199
- 45deg,
200
- transparent 50%,
201
- var(--al-color-text-muted) 50%),
202
- linear-gradient(
203
- 135deg,
204
- var(--al-color-text-muted) 50%,
205
- transparent 50%);
206
- background-position: calc(100% - 16px) calc(50% - 2px), calc(100% - 11px) calc(50% - 2px);
207
- background-size: 5px 5px, 5px 5px;
208
- background-repeat: no-repeat;
209
- }
210
- .al-field-helper,
211
- .al-field-error,
212
- .al-checkbox-description {
213
- margin: 0;
214
- font-size: var(--al-font-size-xs);
215
- line-height: 1.4;
216
- }
217
- .al-field-helper,
218
- .al-checkbox-description {
219
- color: var(--al-color-text-muted);
220
- }
221
- .al-field-error {
222
- color: var(--al-color-danger);
223
- }
224
- .al-checkbox {
225
- display: flex;
226
- align-items: flex-start;
227
- gap: 8px;
228
- cursor: pointer;
229
- }
230
- .al-checkbox-input {
231
- width: 16px;
232
- height: 16px;
233
- margin-top: 2px;
234
- accent-color: var(--al-color-primary);
235
- }
236
- .al-checkbox-copy {
237
- display: flex;
238
- flex-direction: column;
239
- gap: 2px;
240
- }
241
- .al-card {
242
- box-sizing: border-box;
243
- display: flex;
244
- flex-direction: column;
245
- gap: 14px;
246
- background: var(--al-color-surface);
247
- color: var(--al-color-text);
248
- border: 1px solid var(--al-color-border);
249
- border-radius: var(--al-radius-lg);
250
- font-family: var(--al-font-family);
251
- }
252
- .al-card[data-padding=sm] {
253
- padding: var(--al-space-sm);
254
- }
255
- .al-card[data-padding=md] {
256
- padding: var(--al-space-lg);
257
- }
258
- .al-card[data-padding=lg] {
259
- padding: 24px;
260
- }
261
- .al-card-header {
262
- display: flex;
263
- flex-direction: column;
264
- gap: 4px;
265
- }
266
- .al-card-title {
267
- margin: 0;
268
- font-size: var(--al-font-size-lg);
269
- line-height: 1.3;
270
- }
271
- .al-card-description {
272
- margin: 0;
273
- color: var(--al-color-text-muted);
274
- font-size: var(--al-font-size-sm);
275
- line-height: 1.45;
276
- }
277
- .al-card-footer {
278
- display: flex;
279
- justify-content: flex-end;
280
- gap: 8px;
281
- }
282
- .al-badge {
283
- display: inline-flex;
284
- align-items: center;
285
- gap: 4px;
286
- height: 22px;
287
- padding: 0 8px;
288
- border-radius: 999px;
289
- background: color-mix(in srgb, var(--al-badge-color, var(--al-color-primary)) 14%, var(--al-color-surface));
290
- color: var(--al-badge-color, var(--al-color-primary));
291
- font-family: var(--al-font-family);
292
- font-size: var(--al-font-size-xs);
293
- font-weight: 700;
294
- line-height: 1;
295
- white-space: nowrap;
296
- }
297
- .al-badge[data-variant=solid] {
298
- background: var(--al-badge-color, var(--al-color-primary));
299
- color: #fff;
300
- }
301
- .al-table-wrap {
302
- width: 100%;
303
- overflow-x: auto;
304
- border: 1px solid var(--al-color-border);
305
- border-radius: var(--al-radius-lg);
306
- background: var(--al-color-surface);
307
- }
308
- .al-table {
309
- width: 100%;
310
- border-collapse: collapse;
311
- font-family: var(--al-font-family);
312
- font-size: var(--al-font-size-md);
313
- color: var(--al-color-text);
314
- }
315
- .al-table th,
316
- .al-table td {
317
- padding: 10px 12px;
318
- text-align: left;
319
- border-bottom: 1px solid var(--al-color-border);
320
- vertical-align: middle;
321
- }
322
- .al-table th {
323
- background: var(--al-color-surface-muted);
324
- color: var(--al-color-text-muted);
325
- font-size: var(--al-font-size-xs);
326
- font-weight: 700;
327
- letter-spacing: 0.04em;
328
- text-transform: uppercase;
329
- }
330
- .al-table tbody tr:last-child td {
331
- border-bottom: 0;
332
- }
333
- .al-table[data-striped=true] tbody tr:nth-child(even) td {
334
- background: color-mix(in srgb, var(--al-color-surface-muted) 70%, var(--al-color-surface));
335
- }
336
- .al-table tbody tr:hover td {
337
- background: color-mix(in srgb, var(--al-color-primary) 8%, var(--al-color-surface));
338
- }
339
- .al-table[data-size=sm] th,
340
- .al-table[data-size=sm] td {
341
- padding: 6px 10px;
342
- }
343
- .al-table[data-size=lg] th,
344
- .al-table[data-size=lg] td {
345
- padding: 14px 16px;
346
- }
347
- .al-table-empty {
348
- padding: 28px 12px;
349
- color: var(--al-color-text-muted);
350
- text-align: center;
351
- }
352
- .al-table-caption {
353
- caption-side: bottom;
354
- padding: 8px 12px 10px;
355
- color: var(--al-color-text-muted);
356
- font-size: var(--al-font-size-xs);
357
- text-align: left;
358
- }
359
- .accordion {
360
- border: 1px solid var(--al-color-border);
361
- border-radius: var(--al-radius-lg);
362
- background: var(--al-color-surface);
363
- color: var(--al-color-text);
364
- font-family: var(--al-font-family);
365
- overflow: hidden;
366
- }
367
- .accordion-item + .accordion-item {
368
- border-top: 1px solid var(--al-color-border);
369
- }
370
- .accordion-trigger {
371
- display: flex;
372
- align-items: center;
373
- justify-content: space-between;
374
- gap: 12px;
375
- width: 100%;
376
- padding: 12px 14px;
377
- border: 0;
378
- background: transparent;
379
- color: inherit;
380
- font: inherit;
381
- font-weight: 600;
382
- text-align: left;
383
- cursor: pointer;
384
- }
385
- .accordion-trigger:hover {
386
- background: var(--al-color-surface-muted);
387
- }
388
- .accordion-trigger:focus-visible {
389
- outline: 2px solid var(--al-color-focus);
390
- outline-offset: -2px;
391
- }
392
- .accordion-chevron {
393
- width: 8px;
394
- height: 8px;
395
- border-right: 2px solid currentColor;
396
- border-bottom: 2px solid currentColor;
397
- transform: rotate(45deg);
398
- }
399
- .accordion-chevron[data-open=true] {
400
- transform: rotate(225deg);
401
- }
402
- .accordion-panel {
403
- padding: 0 14px 14px;
404
- color: var(--al-color-text-muted);
405
- font-size: var(--al-font-size-sm);
406
- line-height: 1.5;
407
- }
408
- .al-float {
409
- position: relative;
410
- }
411
- .al-float-input {
412
- height: 52px;
413
- padding: 18px 12px 6px;
414
- }
415
- .al-float[data-size=sm] .al-float-input {
416
- height: 44px;
417
- padding-top: 16px;
418
- }
419
- .al-float[data-size=lg] .al-float-input {
420
- height: 58px;
421
- }
422
- .al-float-input::placeholder {
423
- color: transparent;
424
- }
425
- .al-float:focus-within .al-float-input::placeholder {
426
- color: var(--al-color-text-muted);
427
- }
428
- .al-float-label {
429
- position: absolute;
430
- left: 12px;
431
- top: 16px;
432
- max-width: calc(100% - 24px);
433
- overflow: hidden;
434
- color: var(--al-color-text-muted);
435
- font-size: var(--al-font-size-md);
436
- line-height: 1.2;
437
- text-overflow: ellipsis;
438
- white-space: nowrap;
439
- pointer-events: none;
440
- transition:
441
- top 0.15s ease,
442
- font-size 0.15s ease,
443
- color 0.15s ease;
444
- }
445
- .al-float[data-filled=true] .al-float-label,
446
- .al-float:focus-within .al-float-label {
447
- top: 7px;
448
- color: var(--al-control-accent, var(--al-color-primary));
449
- font-size: 11px;
450
- font-weight: 600;
451
- }
452
- .al-float[data-invalid=true] .al-float-label {
453
- color: var(--al-color-danger);
454
- }
455
- .al-file {
456
- display: flex;
457
- align-items: center;
458
- justify-content: space-between;
459
- gap: 16px;
460
- min-height: 84px;
461
- padding: 14px 16px;
462
- border: 1px dashed var(--al-control-border, var(--al-color-border));
463
- border-radius: var(--al-radius-lg);
464
- background: var(--al-color-surface);
465
- color: var(--al-color-text);
466
- cursor: pointer;
467
- }
468
- .al-file:hover,
469
- .al-file.is-dragging,
470
- .al-file:focus-within {
471
- border-style: solid;
472
- border-color: var(--al-control-accent, var(--al-color-primary));
473
- background: color-mix(in srgb, var(--al-color-primary) 6%, var(--al-color-surface));
474
- }
475
- .al-file[data-invalid=true] {
476
- border-color: var(--al-color-danger);
477
- }
478
- .al-file-input {
479
- position: absolute;
480
- width: 1px;
481
- height: 1px;
482
- overflow: hidden;
483
- clip: rect(0, 0, 0, 0);
484
- white-space: nowrap;
485
- border: 0;
486
- }
487
- .al-file-copy {
488
- display: flex;
489
- flex-direction: column;
490
- gap: 4px;
491
- min-width: 0;
492
- }
493
- .al-file-title {
494
- font-weight: 600;
495
- }
496
- .al-file-names {
497
- overflow: hidden;
498
- color: var(--al-color-text-muted);
499
- font-size: var(--al-font-size-xs);
500
- text-overflow: ellipsis;
501
- white-space: nowrap;
502
- }
503
- .al-file-button {
504
- flex: none;
505
- height: 32px;
506
- padding: 0 12px;
507
- border-radius: var(--al-radius-md);
508
- background: var(--al-color-primary);
509
- color: var(--al-color-on-primary);
510
- font-size: var(--al-font-size-sm);
511
- font-weight: 600;
512
- line-height: 32px;
513
- }
514
- /*# sourceMappingURL=index.css.map */