@licklist/design 0.78.5-dev.49 → 0.78.5-dev.50

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 (135) hide show
  1. package/dist/index.js +11 -1
  2. package/dist/v2/components/ActionMenu/ActionMenu.d.ts +13 -0
  3. package/dist/v2/components/ActionMenu/ActionMenu.d.ts.map +1 -0
  4. package/dist/v2/components/ActionMenu/ActionMenu.js +100 -0
  5. package/dist/v2/components/ActionMenu/ActionMenu.scss.js +6 -0
  6. package/dist/v2/components/ActionMenu/index.d.ts +2 -0
  7. package/dist/v2/components/ActionMenu/index.d.ts.map +1 -0
  8. package/dist/v2/components/Alert/Alert.scss.js +1 -1
  9. package/dist/v2/components/Badge/Badge.d.ts +10 -0
  10. package/dist/v2/components/Badge/Badge.d.ts.map +1 -0
  11. package/dist/v2/components/Badge/Badge.js +19 -0
  12. package/dist/v2/components/Badge/Badge.scss.js +6 -0
  13. package/dist/v2/components/Badge/index.d.ts +2 -0
  14. package/dist/v2/components/Badge/index.d.ts.map +1 -0
  15. package/dist/v2/components/Checkbox/Checkbox.scss.js +1 -1
  16. package/dist/v2/components/Customer/CustomerCreate/CustomerCreate.d.ts +11 -0
  17. package/dist/v2/components/Customer/CustomerCreate/CustomerCreate.d.ts.map +1 -0
  18. package/dist/v2/components/Customer/CustomerCreate/CustomerCreate.js +32 -0
  19. package/dist/v2/components/Customer/CustomerCreate/index.d.ts +2 -0
  20. package/dist/v2/components/Customer/CustomerCreate/index.d.ts.map +1 -0
  21. package/dist/v2/components/Customer/CustomerDetail/CustomerDetail.d.ts +35 -0
  22. package/dist/v2/components/Customer/CustomerDetail/CustomerDetail.d.ts.map +1 -0
  23. package/dist/v2/components/Customer/CustomerDetail/CustomerDetail.js +235 -0
  24. package/dist/v2/components/Customer/CustomerDetail/CustomerDetail.scss.js +6 -0
  25. package/dist/v2/components/Customer/CustomerDetail/index.d.ts +2 -0
  26. package/dist/v2/components/Customer/CustomerDetail/index.d.ts.map +1 -0
  27. package/dist/v2/components/Customer/CustomerEdit/CustomerEdit.d.ts +11 -0
  28. package/dist/v2/components/Customer/CustomerEdit/CustomerEdit.d.ts.map +1 -0
  29. package/dist/v2/components/Customer/CustomerEdit/CustomerEdit.js +32 -0
  30. package/dist/v2/components/Customer/CustomerEdit/index.d.ts +2 -0
  31. package/dist/v2/components/Customer/CustomerEdit/index.d.ts.map +1 -0
  32. package/dist/v2/components/Customer/CustomerForm/CustomerForm.d.ts +22 -0
  33. package/dist/v2/components/Customer/CustomerForm/CustomerForm.d.ts.map +1 -0
  34. package/dist/v2/components/Customer/CustomerForm/CustomerForm.js +535 -0
  35. package/dist/v2/components/Customer/CustomerForm/index.d.ts +2 -0
  36. package/dist/v2/components/Customer/CustomerForm/index.d.ts.map +1 -0
  37. package/dist/v2/components/Customer/CustomersList.d.ts +37 -0
  38. package/dist/v2/components/Customer/CustomersList.d.ts.map +1 -0
  39. package/dist/v2/components/Customer/CustomersList.js +204 -0
  40. package/dist/v2/components/Customer/CustomersList.scss.js +6 -0
  41. package/dist/v2/components/Customer/index.d.ts +6 -0
  42. package/dist/v2/components/Customer/index.d.ts.map +1 -0
  43. package/dist/v2/components/FormField/FormField.scss.js +1 -1
  44. package/dist/v2/components/Modal/DeleteModal.d.ts +15 -0
  45. package/dist/v2/components/Modal/DeleteModal.d.ts.map +1 -0
  46. package/dist/v2/components/Modal/DeleteModal.js +147 -0
  47. package/dist/v2/components/Modal/DeleteModal.scss.js +6 -0
  48. package/dist/v2/components/Modal/index.d.ts +3 -0
  49. package/dist/v2/components/Modal/index.d.ts.map +1 -0
  50. package/dist/v2/components/NewInput/NewInput.d.ts +2 -0
  51. package/dist/v2/components/NewInput/NewInput.d.ts.map +1 -1
  52. package/dist/v2/components/NewInput/NewInput.js +29 -12
  53. package/dist/v2/components/NewPageHeader/NewPageHeader.d.ts +1 -0
  54. package/dist/v2/components/NewPageHeader/NewPageHeader.d.ts.map +1 -1
  55. package/dist/v2/components/NewPageHeader/NewPageHeader.js +15 -9
  56. package/dist/v2/components/NewPageHeader/NewPageHeader.scss.js +1 -1
  57. package/dist/v2/components/NewTable/NewTable.d.ts +20 -0
  58. package/dist/v2/components/NewTable/NewTable.d.ts.map +1 -0
  59. package/dist/v2/components/NewTable/NewTable.js +57 -0
  60. package/dist/v2/components/NewTable/NewTable.scss.js +6 -0
  61. package/dist/v2/components/NewTable/index.d.ts +2 -0
  62. package/dist/v2/components/NewTable/index.d.ts.map +1 -0
  63. package/dist/v2/components/Pagination/Pagination.d.ts +13 -0
  64. package/dist/v2/components/Pagination/Pagination.d.ts.map +1 -0
  65. package/dist/v2/components/Pagination/Pagination.js +79 -0
  66. package/dist/v2/components/Pagination/Pagination.scss.js +6 -0
  67. package/dist/v2/components/Pagination/index.d.ts +2 -0
  68. package/dist/v2/components/Pagination/index.d.ts.map +1 -0
  69. package/dist/v2/components/QuickFilter/QuickFilter.d.ts +14 -0
  70. package/dist/v2/components/QuickFilter/QuickFilter.d.ts.map +1 -0
  71. package/dist/v2/components/QuickFilter/QuickFilter.js +67 -0
  72. package/dist/v2/components/QuickFilter/QuickFilter.scss.js +6 -0
  73. package/dist/v2/components/QuickFilter/index.d.ts +2 -0
  74. package/dist/v2/components/QuickFilter/index.d.ts.map +1 -0
  75. package/dist/v2/components/Select/Select.d.ts +7 -4
  76. package/dist/v2/components/Select/Select.d.ts.map +1 -1
  77. package/dist/v2/components/Select/Select.js +53 -24
  78. package/dist/v2/components/Select/Select.scss.js +1 -1
  79. package/dist/v2/components/WYSIWYGEditor/WYSIWYGEditor.scss.js +1 -1
  80. package/dist/v2/components/index.d.ts +18 -0
  81. package/dist/v2/components/index.d.ts.map +1 -1
  82. package/dist/v2/icons/index.d.ts +21 -0
  83. package/dist/v2/icons/index.d.ts.map +1 -1
  84. package/dist/v2/icons/index.js +155 -4
  85. package/dist/v2/navigation/DashboardLayout/ProviderSidebar.d.ts.map +1 -1
  86. package/dist/v2/navigation/DashboardLayout/ProviderSidebar.js +4 -8
  87. package/dist/v2/styles/common.scss +7 -0
  88. package/dist/v2/styles/form/NewInput.scss +45 -21
  89. package/dist/v2/styles/form/NewInput.scss.js +1 -1
  90. package/dist/v2/styles/index.scss +1 -0
  91. package/package.json +3 -3
  92. package/src/v2/components/ActionMenu/ActionMenu.scss +78 -0
  93. package/src/v2/components/ActionMenu/ActionMenu.tsx +64 -0
  94. package/src/v2/components/ActionMenu/index.ts +1 -0
  95. package/src/v2/components/Badge/Badge.scss +69 -0
  96. package/src/v2/components/Badge/Badge.tsx +23 -0
  97. package/src/v2/components/Badge/index.ts +1 -0
  98. package/src/v2/components/Customer/CustomerCreate/CustomerCreate.tsx +36 -0
  99. package/src/v2/components/Customer/CustomerCreate/index.ts +1 -0
  100. package/src/v2/components/Customer/CustomerDetail/CustomerDetail.scss +315 -0
  101. package/src/v2/components/Customer/CustomerDetail/CustomerDetail.tsx +161 -0
  102. package/src/v2/components/Customer/CustomerDetail/index.ts +1 -0
  103. package/src/v2/components/Customer/CustomerEdit/CustomerEdit.tsx +37 -0
  104. package/src/v2/components/Customer/CustomerEdit/index.ts +1 -0
  105. package/src/v2/components/Customer/CustomerForm/CustomerForm.tsx +434 -0
  106. package/src/v2/components/Customer/CustomerForm/index.ts +1 -0
  107. package/src/v2/components/Customer/CustomersList.scss +586 -0
  108. package/src/v2/components/Customer/CustomersList.tsx +193 -0
  109. package/src/v2/components/Customer/index.ts +5 -0
  110. package/src/v2/components/Modal/DeleteModal.scss +254 -0
  111. package/src/v2/components/Modal/DeleteModal.tsx +100 -0
  112. package/src/v2/components/Modal/index.ts +3 -0
  113. package/src/v2/components/NewInput/NewInput.stories.tsx +3 -18
  114. package/src/v2/components/NewInput/NewInput.tsx +23 -12
  115. package/src/v2/components/NewPageHeader/NewPageHeader.scss +13 -7
  116. package/src/v2/components/NewPageHeader/NewPageHeader.tsx +14 -9
  117. package/src/v2/components/NewTable/NewTable.scss +110 -0
  118. package/src/v2/components/NewTable/NewTable.tsx +85 -0
  119. package/src/v2/components/NewTable/index.ts +1 -0
  120. package/src/v2/components/Pagination/Pagination.scss +142 -0
  121. package/src/v2/components/Pagination/Pagination.tsx +80 -0
  122. package/src/v2/components/Pagination/index.ts +1 -0
  123. package/src/v2/components/QuickFilter/QuickFilter.scss +84 -0
  124. package/src/v2/components/QuickFilter/QuickFilter.tsx +49 -0
  125. package/src/v2/components/QuickFilter/index.ts +1 -0
  126. package/src/v2/components/Select/Select.scss +61 -24
  127. package/src/v2/components/Select/Select.stories.tsx +77 -1
  128. package/src/v2/components/Select/Select.tsx +63 -34
  129. package/src/v2/components/index.ts +28 -0
  130. package/src/v2/icons/index.tsx +79 -2
  131. package/src/v2/navigation/DashboardLayout/ProviderSidebar.tsx +3 -1
  132. package/src/v2/navigation/config.tsx +1 -1
  133. package/src/v2/styles/common.scss +7 -0
  134. package/src/v2/styles/form/NewInput.scss +45 -21
  135. package/src/v2/styles/index.scss +1 -0
@@ -0,0 +1,78 @@
1
+ @import '../../styles/tokens/typography';
2
+ @import '../../styles/tokens/colors';
3
+
4
+ .action-menu {
5
+ position: relative;
6
+ display: inline-block;
7
+
8
+ &__trigger {
9
+ display: flex;
10
+ width: 32px;
11
+ height: 32px;
12
+ padding: 8px;
13
+ justify-content: center;
14
+ align-items: center;
15
+ border-radius: 8px;
16
+ border: 1px solid var(--border-primary, #E8E9EF);
17
+ background: var(--surface-primary, #FFF);
18
+ color: var(--actions-regular, #5D5BF4);
19
+ cursor: pointer;
20
+ transition: all 0.2s ease;
21
+
22
+ &:hover {
23
+ background: var(--surface-primary-hover, #F8F8FA);
24
+ }
25
+
26
+ svg {
27
+ width: 16px;
28
+ height: 16px;
29
+ }
30
+ }
31
+
32
+ &__dropdown {
33
+ position: absolute;
34
+ top: calc(100% + 4px);
35
+ right: 0;
36
+ z-index: 1000;
37
+ display: flex;
38
+ min-width: 180px;
39
+ flex-direction: column;
40
+ align-items: flex-start;
41
+ border-radius: 12px;
42
+ background: var(--surface-primary, #FFF);
43
+ box-shadow: 0px 4px 20px 0px rgba(18, 30, 82, 0.15);
44
+ overflow: hidden;
45
+ border: 1px solid var(--border-primary, #E8E9EF);
46
+ }
47
+
48
+ &__item {
49
+ display: flex;
50
+ padding: 12px 16px;
51
+ align-items: center;
52
+ gap: 8px;
53
+ align-self: stretch;
54
+ border: none;
55
+ background: none;
56
+ cursor: pointer;
57
+ @include typography('text.small.emphasis');
58
+ text-align: left;
59
+ transition: background 0.2s ease;
60
+ white-space: nowrap;
61
+
62
+ &--default {
63
+ color: var(--label-primary, #121E52);
64
+
65
+ &:hover {
66
+ background: var(--surface-primary-hover, #F8F8FA);
67
+ }
68
+ }
69
+
70
+ &--danger {
71
+ color: var(--label-danger, #E0423A);
72
+
73
+ &:hover {
74
+ background: var(--surface-danger-soft, #FCECEB);
75
+ }
76
+ }
77
+ }
78
+ }
@@ -0,0 +1,64 @@
1
+ import React, { useState, useRef, useEffect } from 'react'
2
+ import { FaEllipsisH } from 'react-icons/fa'
3
+ import './ActionMenu.scss'
4
+
5
+ export interface ActionMenuItem {
6
+ label: string
7
+ onClick: () => void
8
+ variant?: 'default' | 'danger'
9
+ }
10
+
11
+ export interface ActionMenuProps {
12
+ items: ActionMenuItem[]
13
+ className?: string
14
+ }
15
+
16
+ export const ActionMenu: React.FC<ActionMenuProps> = ({ items, className = '' }) => {
17
+ const [isOpen, setIsOpen] = useState(false)
18
+ const menuRef = useRef<HTMLDivElement>(null)
19
+
20
+ useEffect(() => {
21
+ const handleClickOutside = (event: MouseEvent) => {
22
+ if (menuRef.current && !menuRef.current.contains(event.target as Node)) {
23
+ setIsOpen(false)
24
+ }
25
+ }
26
+
27
+ if (isOpen) {
28
+ document.addEventListener('mousedown', handleClickOutside)
29
+ }
30
+
31
+ return () => {
32
+ document.removeEventListener('mousedown', handleClickOutside)
33
+ }
34
+ }, [isOpen])
35
+
36
+ return (
37
+ <div className={`action-menu ${className}`} ref={menuRef}>
38
+ <button
39
+ className="action-menu__trigger"
40
+ onClick={() => setIsOpen(!isOpen)}
41
+ aria-expanded={isOpen}
42
+ >
43
+ <FaEllipsisH />
44
+ </button>
45
+
46
+ {isOpen && (
47
+ <div className="action-menu__dropdown">
48
+ {items.map((item, index) => (
49
+ <button
50
+ key={index}
51
+ className={`action-menu__item action-menu__item--${item.variant || 'default'}`}
52
+ onClick={() => {
53
+ item.onClick()
54
+ setIsOpen(false)
55
+ }}
56
+ >
57
+ {item.label}
58
+ </button>
59
+ ))}
60
+ </div>
61
+ )}
62
+ </div>
63
+ )
64
+ }
@@ -0,0 +1 @@
1
+ export * from './ActionMenu'
@@ -0,0 +1,69 @@
1
+ .new-badge {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ padding: 2px 12px;
6
+ border-radius: 100px;
7
+ font-size: var(--text-small-size, 13px);
8
+ font-weight: 500;
9
+ line-height: 1.2;
10
+ white-space: nowrap;
11
+ gap: 4px;
12
+
13
+ &__icon {
14
+ display: inline-flex;
15
+ align-items: center;
16
+ justify-content: center;
17
+
18
+ svg {
19
+ width: 16px;
20
+ height: 16px;
21
+ }
22
+ }
23
+
24
+ &--success {
25
+ background-color: var(--surface-status-success, #EEF9EA);
26
+ color: var(--label-status-success, #3A8A1F);
27
+ border: 1px solid var(--border-status-success, #C9ECBD);
28
+ }
29
+
30
+ &--danger {
31
+ background-color: var(--surface-status-error, #FCECEB);
32
+ color: var(--label-status-error, #CC3C35);
33
+ border: 1px solid var(--border-status-error, #F5C4C2);
34
+ }
35
+
36
+ &--warning {
37
+ background-color: var(--surface-status-alert, #FCF6E7);
38
+ color: var(--label-status-alert, #FD7E14);
39
+ border: 1px solid var(--border-status-alert, #FED7B6);
40
+ }
41
+
42
+ &--info {
43
+ background-color: var(--surface-status-info, #E7F4FC);
44
+ color: var(--label-status-info, #0D7FCE);
45
+ border: 1px solid var(--border-status-info, #B4DBF6);
46
+ }
47
+
48
+ &--neutral {
49
+ background-color: var(--surface-secondary, #F8F8FA);
50
+ color: var(--label-secondary, #9399B3);
51
+ border: 1px solid var(--border-primary, #E8E9EF);
52
+ }
53
+ }
54
+
55
+ // Mobile styles
56
+ @media (max-width: 768px) {
57
+ .new-badge {
58
+ padding: 1px 10px;
59
+ font-size: 12px;
60
+ }
61
+ }
62
+
63
+ @media (max-width: 480px) {
64
+ .new-badge {
65
+ padding: 1px 8px;
66
+ font-size: 11px;
67
+ }
68
+ }
69
+
@@ -0,0 +1,23 @@
1
+ import React from 'react'
2
+ import './Badge.scss'
3
+
4
+ export interface BadgeProps {
5
+ children: React.ReactNode
6
+ variant?: 'success' | 'danger' | 'warning' | 'info' | 'neutral'
7
+ className?: string
8
+ icon?: React.ReactNode
9
+ }
10
+
11
+ export const Badge: React.FC<BadgeProps> = ({
12
+ children,
13
+ variant = 'neutral',
14
+ className = '',
15
+ icon,
16
+ }) => {
17
+ return (
18
+ <span className={`new-badge new-badge--${variant} ${className}`}>
19
+ {icon && <span className="new-badge__icon">{icon}</span>}
20
+ {children}
21
+ </span>
22
+ )
23
+ }
@@ -0,0 +1 @@
1
+ export * from './Badge'
@@ -0,0 +1,36 @@
1
+ import React from 'react'
2
+ import { NewPageHeader } from '../../NewPageHeader'
3
+ import { CustomerForm, CustomerData } from '../CustomerForm'
4
+
5
+ export interface CustomerCreateProps {
6
+ onCancel: () => void
7
+ onSave: (data: CustomerData) => void
8
+ initialData?: Partial<CustomerData>
9
+ isLoading?: boolean
10
+ submitButtonLabel?: string
11
+ }
12
+
13
+ export const CustomerCreate: React.FC<CustomerCreateProps> = ({
14
+ onCancel,
15
+ onSave,
16
+ initialData,
17
+ isLoading,
18
+ submitButtonLabel = 'Create Customer',
19
+ }) => {
20
+ return (
21
+ <div className="tw-bg-white tw-min-h-screen tw-font-sans">
22
+ <div className='tw-max-w-4xl tw-mx-auto tw-w-full'>
23
+ <NewPageHeader title="Add Customer" onCancel={onCancel} cancelLabel="Cancel" />
24
+ </div>
25
+
26
+ <div className="tw-max-w-4xl tw-mx-auto tw-w-full tw-bg-white tw-border-2 tw-border-[#e8e9ef] tw-rounded-lg tw-p-4 md:tw-p-8 tw-mt-8">
27
+ <CustomerForm
28
+ onSave={onSave}
29
+ initialData={initialData}
30
+ isLoading={isLoading}
31
+ submitButtonLabel={submitButtonLabel}
32
+ />
33
+ </div>
34
+ </div>
35
+ )
36
+ }
@@ -0,0 +1 @@
1
+ export * from './CustomerCreate'
@@ -0,0 +1,315 @@
1
+ .customer-detail {
2
+ padding: 40px;
3
+ background-color: #fff;
4
+ min-height: 100vh;
5
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
6
+
7
+ &__back {
8
+ color: #6200EE;
9
+ font-weight: 500;
10
+ cursor: pointer;
11
+ margin-bottom: 30px;
12
+ display: inline-flex;
13
+ align-items: center;
14
+ gap: 8px;
15
+ font-size: 14px;
16
+ padding: 8px 16px;
17
+ border-radius: 8px;
18
+ transition: all 0.2s ease;
19
+ border: 1px solid transparent;
20
+
21
+ &:hover {
22
+ background-color: #F3E5FF;
23
+ border: 1px solid #E0C7FF;
24
+ }
25
+ }
26
+
27
+ &__header {
28
+ margin-bottom: 40px;
29
+ }
30
+
31
+ &__name {
32
+ font-size: 32px;
33
+ font-weight: 700;
34
+ color: #121E52;
35
+ margin: 0 0 16px 0;
36
+ }
37
+
38
+ &__badges-row {
39
+ display: flex;
40
+ justify-content: space-between;
41
+ align-items: center;
42
+ }
43
+
44
+ &__badges {
45
+ display: flex;
46
+ gap: 12px;
47
+ align-items: center;
48
+ }
49
+
50
+ &__id-badge {
51
+ background-color: #F4F5F9;
52
+ color: #121E52;
53
+ padding: 4px 12px;
54
+ border-radius: 100px;
55
+ font-size: 12px;
56
+ font-weight: 600;
57
+ border: 1px solid #E2E4ED;
58
+ }
59
+
60
+ &__edit {
61
+ display: inline-flex;
62
+ align-items: center;
63
+ gap: 8px;
64
+ color: #121E52;
65
+ font-weight: 600;
66
+ cursor: pointer;
67
+ font-size: 14px;
68
+ padding: 8px 16px;
69
+ border-radius: 8px;
70
+ transition: all 0.2s ease;
71
+ border: 1px solid transparent;
72
+
73
+ &:hover {
74
+ background-color: #E8EAF0;
75
+ border: 1px solid #D1D5E0;
76
+ }
77
+ }
78
+
79
+ &__grid {
80
+ display: grid;
81
+ grid-template-columns: 1fr 1fr;
82
+ gap: 24px;
83
+ margin-bottom: 24px;
84
+ }
85
+
86
+ &__card {
87
+ background: #FFFFFF;
88
+ border: 1px solid #E2E4ED;
89
+ border-radius: 12px;
90
+ padding: 24px;
91
+
92
+ &--full {
93
+ grid-column: 1 / -1;
94
+ }
95
+ }
96
+
97
+ &__card-title {
98
+ font-size: 18px;
99
+ font-weight: 700;
100
+ color: #121E52;
101
+ margin: 0 0 24px 0;
102
+ }
103
+
104
+ &__info-group {
105
+ display: flex;
106
+ flex-direction: column;
107
+ gap: 4px;
108
+ margin-bottom: 16px;
109
+
110
+ &:last-child {
111
+ margin-bottom: 0;
112
+ }
113
+
114
+ label {
115
+ font-size: 12px;
116
+ color: #9399B3;
117
+ margin: 0;
118
+ }
119
+
120
+ span {
121
+ font-size: 14px;
122
+ font-weight: 500;
123
+ display: inline-flex;
124
+ align-items: center;
125
+ }
126
+ }
127
+
128
+
129
+ &__minor-row {
130
+ display: flex;
131
+ justify-content: space-between;
132
+ align-items: center;
133
+ padding: 16px 0;
134
+ border-bottom: 1px solid #F4F5F9;
135
+
136
+ &:last-child {
137
+ border-bottom: none;
138
+ padding-bottom: 0;
139
+ }
140
+
141
+ &:first-of-type {
142
+ padding-top: 0;
143
+ }
144
+ }
145
+
146
+ &__minor-info {
147
+ display: flex;
148
+ flex-direction: column;
149
+ gap: 4px;
150
+ }
151
+
152
+ &__minor-name {
153
+ font-size: 14px;
154
+ font-weight: 600;
155
+ color: #121E52;
156
+ }
157
+
158
+ &__minor-age {
159
+ font-size: 12px;
160
+ color: #9399B3;
161
+ }
162
+
163
+ &__minor-status-group {
164
+ display: flex;
165
+ align-items: center;
166
+ gap: 16px;
167
+ }
168
+
169
+ &__minor-expires {
170
+ font-size: 12px;
171
+ color: #9399B3;
172
+ }
173
+
174
+ &__footer {
175
+ margin-top: 40px;
176
+ font-size: 12px;
177
+ color: #9399B3;
178
+ }
179
+ }
180
+
181
+ // Mobile styles
182
+ @media (max-width: 768px) {
183
+ .customer-detail {
184
+ padding: 20px 16px;
185
+
186
+ &__back {
187
+ font-size: 13px;
188
+ padding: 6px 12px;
189
+ margin-bottom: 20px;
190
+ }
191
+
192
+ &__header {
193
+ margin-bottom: 24px;
194
+ }
195
+
196
+ &__name {
197
+ font-size: 24px;
198
+ margin-bottom: 12px;
199
+ }
200
+
201
+ &__badges-row {
202
+ flex-direction: column;
203
+ align-items: flex-start;
204
+ gap: 12px;
205
+ }
206
+
207
+ &__badges {
208
+ flex-wrap: wrap;
209
+ }
210
+
211
+ &__id-badge {
212
+ font-size: 11px;
213
+ padding: 3px 10px;
214
+ }
215
+
216
+ &__edit {
217
+ font-size: 13px;
218
+ padding: 6px 12px;
219
+ align-self: flex-start;
220
+ }
221
+
222
+ &__grid {
223
+ grid-template-columns: 1fr;
224
+ gap: 16px;
225
+ margin-bottom: 16px;
226
+ }
227
+
228
+ &__card {
229
+ padding: 20px;
230
+
231
+ &--full {
232
+ grid-column: 1;
233
+ }
234
+ }
235
+
236
+ &__card-title {
237
+ font-size: 16px;
238
+ margin-bottom: 16px;
239
+ }
240
+
241
+ &__info-group {
242
+ margin-bottom: 14px;
243
+
244
+ label {
245
+ font-size: 11px;
246
+ }
247
+
248
+ span {
249
+ font-size: 13px;
250
+ }
251
+ }
252
+
253
+ &__minor-row {
254
+ flex-direction: column;
255
+ align-items: flex-start;
256
+ gap: 12px;
257
+ padding: 12px 0;
258
+ }
259
+
260
+ &__minor-name {
261
+ font-size: 13px;
262
+ }
263
+
264
+ &__minor-age,
265
+ &__minor-expires {
266
+ font-size: 11px;
267
+ }
268
+
269
+ &__minor-status-group {
270
+ width: 100%;
271
+ justify-content: space-between;
272
+ }
273
+
274
+ &__footer {
275
+ margin-top: 24px;
276
+ font-size: 11px;
277
+ }
278
+ }
279
+ }
280
+
281
+ // Extra small mobile devices
282
+ @media (max-width: 480px) {
283
+ .customer-detail {
284
+ padding: 16px 12px;
285
+
286
+ &__back {
287
+ font-size: 12px;
288
+ padding: 4px 8px;
289
+ margin-bottom: 16px;
290
+ }
291
+
292
+ &__name {
293
+ font-size: 20px;
294
+ }
295
+
296
+ &__card {
297
+ padding: 16px;
298
+ border-radius: 8px;
299
+ }
300
+
301
+ &__card-title {
302
+ font-size: 15px;
303
+ margin-bottom: 12px;
304
+ }
305
+
306
+ &__badges {
307
+ gap: 8px;
308
+ }
309
+
310
+ &__minor-row {
311
+ padding: 10px 0;
312
+ }
313
+ }
314
+ }
315
+