@dragunio/fe-libs 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,6 +9,7 @@ src/ # Public library entrypoints and styles
9
9
  packages/ # Internal component source folders
10
10
  ├── icons/
11
11
  ├── button/
12
+ ├── tabs/
12
13
  ├── table/
13
14
  ├── toggle/
14
15
  ├── drawer/
@@ -47,12 +48,16 @@ Available review routes:
47
48
  - `http://127.0.0.1:3000/#/` — overview
48
49
  - `http://127.0.0.1:3000/#/icons` — SVG Icons
49
50
  - `http://127.0.0.1:3000/#/button` — Button
51
+ - `http://127.0.0.1:3000/#/button-bar` — Button Bar
52
+ - `http://127.0.0.1:3000/#/tabs` — Tabs & Segments
50
53
  - `http://127.0.0.1:3000/#/table` — Table
51
54
  - `http://127.0.0.1:3000/#/drawer` — Drawer
52
55
  - `http://127.0.0.1:3000/#/selection` — Selection
53
56
  - `http://127.0.0.1:3000/#/datetime` — DateTimePicker
54
57
  - `http://127.0.0.1:3000/#/currency` — CurrencyInput
55
58
  - `http://127.0.0.1:3000/#/number` — NumberInput
59
+ - `http://127.0.0.1:3000/#/file-upload` — FileUpload
60
+ - `http://127.0.0.1:3000/#/file-preview` — FilePreview
56
61
  - `http://127.0.0.1:3000/#/tooltip` — Tooltip
57
62
  - `http://127.0.0.1:3000/#/expandable` — ExpandableSection
58
63
  - `http://127.0.0.1:3000/#/loading` — Loading
@@ -62,6 +67,7 @@ Available review routes:
62
67
  - `http://127.0.0.1:3000/#/chip` — Chip
63
68
  - `http://127.0.0.1:3000/#/avatar` — Avatar
64
69
  - `http://127.0.0.1:3000/#/text-input` — TextInput & TextArea
70
+ - `http://127.0.0.1:3000/#/validated-inputs` — EmailInput, PasswordInput & PhoneNumberInput
65
71
  - `http://127.0.0.1:3000/#/pagination` — Pagination
66
72
  - `http://127.0.0.1:3000/#/message` — Message
67
73
  - `http://127.0.0.1:3000/#/snackbar` — Snackbar
@@ -78,6 +84,12 @@ To verify a production-like consumer build:
78
84
  pnpm build
79
85
  ```
80
86
 
87
+ ## Security review note
88
+
89
+ The playground may be exposed through a short-lived Vite tunnel for external manual testing. Treat a shared tunnel link as public for as long as the tunnel is running: do not place secrets, credentials, private IP addresses, internal API details, authorization headers, or sensitive response fixtures in the demo source. `VITE_*` values are client-side values and must not contain secrets.
90
+
91
+ Proposed automated safeguard (not installed yet): run a pre-commit scan only on staged files and block the commit when it finds common credentials, `.env` content, private network details, or sensitive API configuration. This should normally take less than a second for a small staged change and has no ongoing runtime cost. A dedicated secret scanner in CI can be added later to catch commits that bypass the local hook; a unit test is not a reliable secret-detection mechanism.
92
+
81
93
  ## Consuming the published library
82
94
 
83
95
  ```bash
@@ -89,6 +101,7 @@ import {
89
101
  Button,
90
102
  PlusIcon,
91
103
  Table,
104
+ Tabs,
92
105
  Toggle,
93
106
  Checkbox,
94
107
  RadioButton,
@@ -99,6 +112,25 @@ import {
99
112
  import '@dragunio/fe-libs/styles.css';
100
113
  ```
101
114
 
115
+ ### Tabs and segments
116
+
117
+ `Tabs` divides related content into accessible tabs and supports `variant="tab"` (the default underline style) or `variant="segment"`. It can be controlled with `value` or used uncontrolled with `defaultValue`. When labels overflow, the tab list scrolls horizontally; `scrollButtons="auto"` reveals arrow controls only when needed, while the chosen tab is automatically scrolled into view.
118
+
119
+ ```tsx
120
+ const [section, setSection] = useState('overview');
121
+
122
+ <Tabs
123
+ aria-label="Project sections"
124
+ value={section}
125
+ onChange={(value) => setSection(value)}
126
+ items={[
127
+ { id: 'overview', label: 'Overview', content: <Overview /> },
128
+ { id: 'activity', label: 'Activity', content: <Activity /> },
129
+ { id: 'members', label: 'Members', content: <Members /> },
130
+ ]}
131
+ />;
132
+ ```
133
+
102
134
  ### Toggle
103
135
 
104
136
  `Toggle` is a native checkbox styled as a switch. It supports controlled and uncontrolled usage, including the standard `onChange`, `onClick`, and `disabled` props. The active color is green by default and accepts any CSS color. Use `labelPosition="top"` to render its label above the switch; `right` is the default.
@@ -162,14 +194,17 @@ The library exposes ESM, CommonJS, TypeScript declarations, and keeps React as a
162
194
 
163
195
  ### New form and overlay primitives
164
196
 
165
- - `Drawer` is a portal-based modal panel with `left`, `right`, `top`, and `bottom` slide-in animations. Use `fullScreen` for a full-viewport panel and `footer` for fixed actions below the scrollable body.
197
+ - `Drawer` is a portal-based modal panel with `left`, `right`, `top`, and `bottom` slide-in animations. Use `DrawerWidths.small`, `.medium`, or `.large` (360px, 400px, 480px) with `width`, or provide any custom CSS width. Use `fullScreen` for a full-viewport panel and `footer` for fixed actions below the scrollable body. It automatically adapts to smaller screens: side drawers use the available viewport width, while top and bottom drawers become sheet-style panels.
166
198
  - `Selection` is a rounded custom dropdown inspired by DropdownCustom, with single/multiple modes, optional search, clear action, tags, form-field values, and keyboard navigation.
167
199
  - `DateTimePicker` supports `mode="single"` and `mode="range"`; its default format is `dd/MM/yyyy HH:mm`.
168
200
  - `NumberInput` and `CurrencyInput` format values immediately while typing (`1000` → `1,000`) and keep up to two fractional digits by default. Both include accessible up/down controls (and arrow-key support); use `step` or `showStepper` to configure them. `NumberInput` also accepts `prefix`/`suffix` adornments. Use `allowDecimal`, `decimals`, `min`, and `max` to control decimal input and numeric limits. Both support `error` and `errorMessage` with the same red border/message treatment as `TextInput`. `CurrencyInput` adds a `VND` suffix by default, or a currency dropdown through `currencies`.
201
+ - `FileUpload` accepts browser `File` objects from selecting or dropping files. Choose its preset `accept` groups—such as `image`, `pdf`, `document`, `audio`, and `video`—instead of manually assembling MIME patterns; it validates them with `maxSize`, `maxFiles`, and duplicate checks locally, then emits `onChange`, `onAccept`, `onReject`, and `onRemove` synchronously. It deliberately contains no endpoint, request, `async`, or upload-progress behavior.
202
+ - `FilePreview` is a local, portal-based File viewer. It displays the current file count in its backdrop header, supports buttons and ArrowLeft/ArrowRight navigation, calls `onEscape` then `onClose('escape')`, and reports `onDelete`/`onDownload` with the active `File`. Its Download action starts a direct local browser download—there is no endpoint or transport behavior.
169
203
  - `Tooltip` shows accessible content on hover and focus.
170
204
  - `ExpandableSection` provides controlled and uncontrolled expand/collapse behavior.
171
205
  - `TextInput` and `TextArea` support `error`/`errorMessage`, `helperText`, `clearable`, `onClear`, and `onValueChange`. `TextArea` also accepts `autosize` (default `false`) to grow with its content. `TextInput` also accepts `label`, `isRequired`, and `prefix`/`suffix` adornments. Passing a string to `error` shows it below the field and applies the error border.
172
- - `Modal` is a centered portal dialog in `small`, `medium`, `large`, `xlarge`, and `full` sizes. Its close control and `actions` are library `Button` instances.
206
+ - `EmailInput`, `PasswordInput`, and `PhoneNumberInput` add their standard mailbox, show/hide password, and phone adornments. They validate their formats on blur by default; use `validateOn="change"` for immediate feedback and `validate={(value) => ...}` for an additional rule. Passwords require at least eight characters including uppercase, lowercase, and a number; phone numbers accept digits, spaces, parentheses, and plus signs, and require 7–15 digits.
207
+ - `Modal` is a centered portal dialog in `small`, `medium`, `large`, `xlarge`, and `full` sizes. Its close control and `actions` are library `Button` instances. Modal and Drawer trap keyboard focus, lock background scrolling, return focus to their opener, and respect reduced-motion preferences. Use `initialFocusRef`, `restoreFocus`, `closeOnEscape`, and `closeOnBackdropClick` to customize that behavior.
173
208
  - `Loading` provides `small`, `medium`, and `large` circular indicators (or a custom pixel `size`); use `Skeleton.Circle` and `Skeleton.Square` with `size`, or `Skeleton.Box` and `Skeleton.Line` with `width` and `height`.
174
209
  - `ProgressBar` is determinate when `value` is supplied and renders an indeterminate back-and-forth animation when it is omitted.
175
210
  - `Chip` supports the standard `default`, `success`, `error`, `info`, and `warning` palettes, plus `color` for any CSS color and `subtle`, `solid`, or `outline` variants.
@@ -190,6 +225,17 @@ The library exposes ESM, CommonJS, TypeScript declarations, and keeps React as a
190
225
  clearable
191
226
  />
192
227
 
228
+ <EmailInput
229
+ label="Work email"
230
+ value={email}
231
+ onValueChange={setEmail}
232
+ validate={(value) =>
233
+ value.endsWith('@dragunio.com') || 'Use your work email.'
234
+ }
235
+ />
236
+ <PasswordInput label="Password" />
237
+ <PhoneNumberInput label="Phone number" placeholder="+84 (123) 456 789" />
238
+
193
239
  <ProgressBar label="Upload" value={72} />
194
240
  <ProgressBar label="Synchronising" />
195
241
  <Chip status="success" dot>Complete</Chip>
@@ -52,16 +52,16 @@ var iconProps2 = ({ size, ...props }) => ({
52
52
  ...props
53
53
  });
54
54
  var chevron_right = (props) => {
55
- return /* @__PURE__ */ jsx2("svg", { ...iconProps2(props), children: /* @__PURE__ */ jsx2("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M8.39898 5.39898C8.73093 5.06704 9.26912 5.06704 9.60107 5.39898L15.6011 11.399C15.933 11.7309 15.933 12.2691 15.6011 12.6011L9.60107 18.6011C9.26912 18.933 8.73093 18.933 8.39898 18.6011C8.06704 18.2691 8.06704 17.7309 8.39898 17.399L13.7979 12L8.39898 6.60107C8.06704 6.26912 8.06704 5.73093 8.39898 5.39898Z", fill: props.fill }) });
55
+ return /* @__PURE__ */ jsx2("svg", { ...iconProps2(props), children: /* @__PURE__ */ jsx2("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M8.39898 5.39898C8.73093 5.06704 9.26912 5.06704 9.60107 5.39898L15.6011 11.399C15.933 11.7309 15.933 12.2691 15.6011 12.6011L9.60107 18.6011C9.26912 18.933 8.73093 18.933 8.39898 18.6011C8.06704 18.2691 8.06704 17.7309 8.39898 17.399L13.7979 12L8.39898 6.60107C8.06704 6.26912 8.06704 5.73093 8.39898 5.39898Z", fill: props.fill }) });
56
56
  };
57
57
  var chevron_up = (props) => {
58
- return /* @__PURE__ */ jsx2("svg", { ...iconProps2(props), children: /* @__PURE__ */ jsx2("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M11.399 8.39898C11.7309 8.06704 12.2691 8.06704 12.6011 8.39898L18.6011 14.399C18.933 14.7309 18.933 15.2691 18.6011 15.6011C18.2691 15.933 17.7309 15.933 17.399 15.6011L12 10.2021L6.60107 15.6011C6.26912 15.933 5.73093 15.933 5.39898 15.6011C5.06704 15.2691 5.06704 14.7309 5.39898 14.399L11.399 8.39898Z", fill: "#101828" }) });
58
+ return /* @__PURE__ */ jsx2("svg", { ...iconProps2(props), children: /* @__PURE__ */ jsx2("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M11.399 8.39898C11.7309 8.06704 12.2691 8.06704 12.6011 8.39898L18.6011 14.399C18.933 14.7309 18.933 15.2691 18.6011 15.6011C18.2691 15.933 17.7309 15.933 17.399 15.6011L12 10.2021L6.60107 15.6011C6.26912 15.933 5.73093 15.933 5.39898 15.6011C5.06704 15.2691 5.06704 14.7309 5.39898 14.399L11.399 8.39898Z", fill: "#101828" }) });
59
59
  };
60
60
  var chevron_left = (props) => {
61
- return /* @__PURE__ */ jsx2("svg", { ...iconProps2(props), children: /* @__PURE__ */ jsx2("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M15.6011 5.39898C15.933 5.73093 15.933 6.26912 15.6011 6.60107L10.2021 12L15.6011 17.399C15.933 17.7309 15.933 18.2691 15.6011 18.6011C15.2691 18.933 14.7309 18.933 14.399 18.6011L8.39898 12.6011C8.06704 12.2691 8.06704 11.7309 8.39898 11.399L14.399 5.39898C14.7309 5.06704 15.2691 5.06704 15.6011 5.39898Z", fill: "#101828" }) });
61
+ return /* @__PURE__ */ jsx2("svg", { ...iconProps2(props), children: /* @__PURE__ */ jsx2("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M15.6011 5.39898C15.933 5.73093 15.933 6.26912 15.6011 6.60107L10.2021 12L15.6011 17.399C15.933 17.7309 15.933 18.2691 15.6011 18.6011C15.2691 18.933 14.7309 18.933 14.399 18.6011L8.39898 12.6011C8.06704 12.2691 8.06704 11.7309 8.39898 11.399L14.399 5.39898C14.7309 5.06704 15.2691 5.06704 15.6011 5.39898Z", fill: "#101828" }) });
62
62
  };
63
63
  var chevron_down = (props) => {
64
- return /* @__PURE__ */ jsx2("svg", { ...iconProps2(props), children: /* @__PURE__ */ jsx2("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M5.39898 8.39898C5.73093 8.06704 6.26912 8.06704 6.60107 8.39898L12 13.7979L17.399 8.39898C17.7309 8.06704 18.2691 8.06704 18.6011 8.39898C18.933 8.73093 18.933 9.26912 18.6011 9.60107L12.6011 15.6011C12.2691 15.933 11.7309 15.933 11.399 15.6011L5.39898 9.60107C5.06704 9.26912 5.06704 8.73093 5.39898 8.39898Z", fill: "#101828" }) });
64
+ return /* @__PURE__ */ jsx2("svg", { ...iconProps2(props), children: /* @__PURE__ */ jsx2("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M5.39898 8.39898C5.73093 8.06704 6.26912 8.06704 6.60107 8.39898L12 13.7979L17.399 8.39898C17.7309 8.06704 18.2691 8.06704 18.6011 8.39898C18.933 8.73093 18.933 9.26912 18.6011 9.60107L12.6011 15.6011C12.2691 15.933 11.7309 15.933 11.399 15.6011L5.39898 9.60107C5.06704 9.26912 5.06704 8.73093 5.39898 8.39898Z", fill: "#101828" }) });
65
65
  };
66
66
 
67
67
  // packages/icons/src/svgItems/security.tsx
@@ -169,6 +169,82 @@ function SearchIcon(props) {
169
169
  )
170
170
  ] });
171
171
  }
172
+ function MailboxIcon(props) {
173
+ return /* @__PURE__ */ jsxs("svg", { ...iconProps4(props), children: [
174
+ /* @__PURE__ */ jsx4(
175
+ "rect",
176
+ {
177
+ x: "3.5",
178
+ y: "5.5",
179
+ width: "17",
180
+ height: "13",
181
+ rx: "2",
182
+ stroke: "currentColor",
183
+ strokeWidth: "1.8"
184
+ }
185
+ ),
186
+ /* @__PURE__ */ jsx4(
187
+ "path",
188
+ {
189
+ d: "m4.5 7 6.04 4.53a2.4 2.4 0 0 0 2.92 0L19.5 7",
190
+ stroke: "currentColor",
191
+ strokeWidth: "1.8",
192
+ strokeLinecap: "round",
193
+ strokeLinejoin: "round"
194
+ }
195
+ )
196
+ ] });
197
+ }
198
+ function PhoneIcon(props) {
199
+ return /* @__PURE__ */ jsx4("svg", { ...iconProps4(props), children: /* @__PURE__ */ jsx4(
200
+ "path",
201
+ {
202
+ d: "M8.05 3.75 5.84 4.8c-.76.36-1.15 1.2-.94 2.02 1.55 6.14 6.34 10.93 12.48 12.48.82.21 1.66-.18 2.02-.94l1.05-2.21a1.5 1.5 0 0 0-.57-1.91l-2.41-1.48a1.5 1.5 0 0 0-1.8.18l-1.23 1.06a10.38 10.38 0 0 1-4.45-4.45l1.06-1.23a1.5 1.5 0 0 0 .18-1.8L9.96 4.32a1.5 1.5 0 0 0-1.91-.57Z",
203
+ stroke: "currentColor",
204
+ strokeWidth: "1.8",
205
+ strokeLinecap: "round",
206
+ strokeLinejoin: "round"
207
+ }
208
+ ) });
209
+ }
210
+ function EyeIcon(props) {
211
+ return /* @__PURE__ */ jsxs("svg", { ...iconProps4(props), children: [
212
+ /* @__PURE__ */ jsx4(
213
+ "path",
214
+ {
215
+ d: "M2.9 12s3.1-5 9.1-5 9.1 5 9.1 5-3.1 5-9.1 5-9.1-5-9.1-5Z",
216
+ stroke: "currentColor",
217
+ strokeWidth: "1.8",
218
+ strokeLinecap: "round",
219
+ strokeLinejoin: "round"
220
+ }
221
+ ),
222
+ /* @__PURE__ */ jsx4("circle", { cx: "12", cy: "12", r: "2.4", stroke: "currentColor", strokeWidth: "1.8" })
223
+ ] });
224
+ }
225
+ function EyeOffIcon(props) {
226
+ return /* @__PURE__ */ jsxs("svg", { ...iconProps4(props), children: [
227
+ /* @__PURE__ */ jsx4(
228
+ "path",
229
+ {
230
+ d: "M10.58 7.16A6.1 6.1 0 0 1 12 7c6 0 9.1 5 9.1 5a16.1 16.1 0 0 1-2.54 2.84M13.28 16.83A6.1 6.1 0 0 1 12 17c-6 0-9.1-5-9.1-5a16.1 16.1 0 0 1 2.59-2.87",
231
+ stroke: "currentColor",
232
+ strokeWidth: "1.8",
233
+ strokeLinecap: "round",
234
+ strokeLinejoin: "round"
235
+ }
236
+ ),
237
+ /* @__PURE__ */ jsx4(
238
+ "path",
239
+ {
240
+ d: "m3.5 3.5 17 17M10.1 10.1a2.7 2.7 0 0 0 3.8 3.8",
241
+ stroke: "currentColor",
242
+ strokeWidth: "1.8",
243
+ strokeLinecap: "round"
244
+ }
245
+ )
246
+ ] });
247
+ }
172
248
 
173
249
  export {
174
250
  plus,
@@ -194,5 +270,9 @@ export {
194
270
  CloseIcon,
195
271
  MoreHorizontalIcon,
196
272
  MoreVerticalIcon,
197
- SearchIcon
273
+ SearchIcon,
274
+ MailboxIcon,
275
+ PhoneIcon,
276
+ EyeIcon,
277
+ EyeOffIcon
198
278
  };
package/dist/icons.d.mts CHANGED
@@ -31,5 +31,9 @@ declare function CloseIcon(props: IconProps): react.JSX.Element;
31
31
  declare function MoreHorizontalIcon(props: IconProps): react.JSX.Element;
32
32
  declare function MoreVerticalIcon(props: IconProps): react.JSX.Element;
33
33
  declare function SearchIcon(props: IconProps): react.JSX.Element;
34
+ declare function MailboxIcon(props: IconProps): react.JSX.Element;
35
+ declare function PhoneIcon(props: IconProps): react.JSX.Element;
36
+ declare function EyeIcon(props: IconProps): react.JSX.Element;
37
+ declare function EyeOffIcon(props: IconProps): react.JSX.Element;
34
38
 
35
- export { ChevronDownIcon, ChevronUpIcon, CloseIcon, type IconProps, MoreHorizontalIcon, MoreVerticalIcon, PlusIcon, SearchIcon, arrow_left, check_square_fill, chevron_down, chevron_left, chevron_right, chevron_up, copy, key, lock, lock_unlocked, log_out, minus_square, plus, plus_square, search, trash, x_close };
39
+ export { ChevronDownIcon, ChevronUpIcon, CloseIcon, EyeIcon, EyeOffIcon, type IconProps, MailboxIcon, MoreHorizontalIcon, MoreVerticalIcon, PhoneIcon, PlusIcon, SearchIcon, arrow_left, check_square_fill, chevron_down, chevron_left, chevron_right, chevron_up, copy, key, lock, lock_unlocked, log_out, minus_square, plus, plus_square, search, trash, x_close };
package/dist/icons.d.ts CHANGED
@@ -31,5 +31,9 @@ declare function CloseIcon(props: IconProps): react.JSX.Element;
31
31
  declare function MoreHorizontalIcon(props: IconProps): react.JSX.Element;
32
32
  declare function MoreVerticalIcon(props: IconProps): react.JSX.Element;
33
33
  declare function SearchIcon(props: IconProps): react.JSX.Element;
34
+ declare function MailboxIcon(props: IconProps): react.JSX.Element;
35
+ declare function PhoneIcon(props: IconProps): react.JSX.Element;
36
+ declare function EyeIcon(props: IconProps): react.JSX.Element;
37
+ declare function EyeOffIcon(props: IconProps): react.JSX.Element;
34
38
 
35
- export { ChevronDownIcon, ChevronUpIcon, CloseIcon, type IconProps, MoreHorizontalIcon, MoreVerticalIcon, PlusIcon, SearchIcon, arrow_left, check_square_fill, chevron_down, chevron_left, chevron_right, chevron_up, copy, key, lock, lock_unlocked, log_out, minus_square, plus, plus_square, search, trash, x_close };
39
+ export { ChevronDownIcon, ChevronUpIcon, CloseIcon, EyeIcon, EyeOffIcon, type IconProps, MailboxIcon, MoreHorizontalIcon, MoreVerticalIcon, PhoneIcon, PlusIcon, SearchIcon, arrow_left, check_square_fill, chevron_down, chevron_left, chevron_right, chevron_up, copy, key, lock, lock_unlocked, log_out, minus_square, plus, plus_square, search, trash, x_close };
package/dist/icons.js CHANGED
@@ -23,8 +23,12 @@ __export(icons_exports, {
23
23
  ChevronDownIcon: () => ChevronDownIcon,
24
24
  ChevronUpIcon: () => ChevronUpIcon,
25
25
  CloseIcon: () => CloseIcon,
26
+ EyeIcon: () => EyeIcon,
27
+ EyeOffIcon: () => EyeOffIcon,
28
+ MailboxIcon: () => MailboxIcon,
26
29
  MoreHorizontalIcon: () => MoreHorizontalIcon,
27
30
  MoreVerticalIcon: () => MoreVerticalIcon,
31
+ PhoneIcon: () => PhoneIcon,
28
32
  PlusIcon: () => PlusIcon,
29
33
  SearchIcon: () => SearchIcon,
30
34
  arrow_left: () => arrow_left,
@@ -101,16 +105,16 @@ var iconProps2 = ({ size, ...props }) => ({
101
105
  ...props
102
106
  });
103
107
  var chevron_right = (props) => {
104
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("svg", { ...iconProps2(props), children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M8.39898 5.39898C8.73093 5.06704 9.26912 5.06704 9.60107 5.39898L15.6011 11.399C15.933 11.7309 15.933 12.2691 15.6011 12.6011L9.60107 18.6011C9.26912 18.933 8.73093 18.933 8.39898 18.6011C8.06704 18.2691 8.06704 17.7309 8.39898 17.399L13.7979 12L8.39898 6.60107C8.06704 6.26912 8.06704 5.73093 8.39898 5.39898Z", fill: props.fill }) });
108
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("svg", { ...iconProps2(props), children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M8.39898 5.39898C8.73093 5.06704 9.26912 5.06704 9.60107 5.39898L15.6011 11.399C15.933 11.7309 15.933 12.2691 15.6011 12.6011L9.60107 18.6011C9.26912 18.933 8.73093 18.933 8.39898 18.6011C8.06704 18.2691 8.06704 17.7309 8.39898 17.399L13.7979 12L8.39898 6.60107C8.06704 6.26912 8.06704 5.73093 8.39898 5.39898Z", fill: props.fill }) });
105
109
  };
106
110
  var chevron_up = (props) => {
107
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("svg", { ...iconProps2(props), children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M11.399 8.39898C11.7309 8.06704 12.2691 8.06704 12.6011 8.39898L18.6011 14.399C18.933 14.7309 18.933 15.2691 18.6011 15.6011C18.2691 15.933 17.7309 15.933 17.399 15.6011L12 10.2021L6.60107 15.6011C6.26912 15.933 5.73093 15.933 5.39898 15.6011C5.06704 15.2691 5.06704 14.7309 5.39898 14.399L11.399 8.39898Z", fill: "#101828" }) });
111
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("svg", { ...iconProps2(props), children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M11.399 8.39898C11.7309 8.06704 12.2691 8.06704 12.6011 8.39898L18.6011 14.399C18.933 14.7309 18.933 15.2691 18.6011 15.6011C18.2691 15.933 17.7309 15.933 17.399 15.6011L12 10.2021L6.60107 15.6011C6.26912 15.933 5.73093 15.933 5.39898 15.6011C5.06704 15.2691 5.06704 14.7309 5.39898 14.399L11.399 8.39898Z", fill: "#101828" }) });
108
112
  };
109
113
  var chevron_left = (props) => {
110
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("svg", { ...iconProps2(props), children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M15.6011 5.39898C15.933 5.73093 15.933 6.26912 15.6011 6.60107L10.2021 12L15.6011 17.399C15.933 17.7309 15.933 18.2691 15.6011 18.6011C15.2691 18.933 14.7309 18.933 14.399 18.6011L8.39898 12.6011C8.06704 12.2691 8.06704 11.7309 8.39898 11.399L14.399 5.39898C14.7309 5.06704 15.2691 5.06704 15.6011 5.39898Z", fill: "#101828" }) });
114
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("svg", { ...iconProps2(props), children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M15.6011 5.39898C15.933 5.73093 15.933 6.26912 15.6011 6.60107L10.2021 12L15.6011 17.399C15.933 17.7309 15.933 18.2691 15.6011 18.6011C15.2691 18.933 14.7309 18.933 14.399 18.6011L8.39898 12.6011C8.06704 12.2691 8.06704 11.7309 8.39898 11.399L14.399 5.39898C14.7309 5.06704 15.2691 5.06704 15.6011 5.39898Z", fill: "#101828" }) });
111
115
  };
112
116
  var chevron_down = (props) => {
113
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("svg", { ...iconProps2(props), children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M5.39898 8.39898C5.73093 8.06704 6.26912 8.06704 6.60107 8.39898L12 13.7979L17.399 8.39898C17.7309 8.06704 18.2691 8.06704 18.6011 8.39898C18.933 8.73093 18.933 9.26912 18.6011 9.60107L12.6011 15.6011C12.2691 15.933 11.7309 15.933 11.399 15.6011L5.39898 9.60107C5.06704 9.26912 5.06704 8.73093 5.39898 8.39898Z", fill: "#101828" }) });
117
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("svg", { ...iconProps2(props), children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M5.39898 8.39898C5.73093 8.06704 6.26912 8.06704 6.60107 8.39898L12 13.7979L17.399 8.39898C17.7309 8.06704 18.2691 8.06704 18.6011 8.39898C18.933 8.73093 18.933 9.26912 18.6011 9.60107L12.6011 15.6011C12.2691 15.933 11.7309 15.933 11.399 15.6011L5.39898 9.60107C5.06704 9.26912 5.06704 8.73093 5.39898 8.39898Z", fill: "#101828" }) });
114
118
  };
115
119
 
116
120
  // packages/icons/src/svgItems/security.tsx
@@ -218,13 +222,93 @@ function SearchIcon(props) {
218
222
  )
219
223
  ] });
220
224
  }
225
+ function MailboxIcon(props) {
226
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("svg", { ...iconProps4(props), children: [
227
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
228
+ "rect",
229
+ {
230
+ x: "3.5",
231
+ y: "5.5",
232
+ width: "17",
233
+ height: "13",
234
+ rx: "2",
235
+ stroke: "currentColor",
236
+ strokeWidth: "1.8"
237
+ }
238
+ ),
239
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
240
+ "path",
241
+ {
242
+ d: "m4.5 7 6.04 4.53a2.4 2.4 0 0 0 2.92 0L19.5 7",
243
+ stroke: "currentColor",
244
+ strokeWidth: "1.8",
245
+ strokeLinecap: "round",
246
+ strokeLinejoin: "round"
247
+ }
248
+ )
249
+ ] });
250
+ }
251
+ function PhoneIcon(props) {
252
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("svg", { ...iconProps4(props), children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
253
+ "path",
254
+ {
255
+ d: "M8.05 3.75 5.84 4.8c-.76.36-1.15 1.2-.94 2.02 1.55 6.14 6.34 10.93 12.48 12.48.82.21 1.66-.18 2.02-.94l1.05-2.21a1.5 1.5 0 0 0-.57-1.91l-2.41-1.48a1.5 1.5 0 0 0-1.8.18l-1.23 1.06a10.38 10.38 0 0 1-4.45-4.45l1.06-1.23a1.5 1.5 0 0 0 .18-1.8L9.96 4.32a1.5 1.5 0 0 0-1.91-.57Z",
256
+ stroke: "currentColor",
257
+ strokeWidth: "1.8",
258
+ strokeLinecap: "round",
259
+ strokeLinejoin: "round"
260
+ }
261
+ ) });
262
+ }
263
+ function EyeIcon(props) {
264
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("svg", { ...iconProps4(props), children: [
265
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
266
+ "path",
267
+ {
268
+ d: "M2.9 12s3.1-5 9.1-5 9.1 5 9.1 5-3.1 5-9.1 5-9.1-5-9.1-5Z",
269
+ stroke: "currentColor",
270
+ strokeWidth: "1.8",
271
+ strokeLinecap: "round",
272
+ strokeLinejoin: "round"
273
+ }
274
+ ),
275
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("circle", { cx: "12", cy: "12", r: "2.4", stroke: "currentColor", strokeWidth: "1.8" })
276
+ ] });
277
+ }
278
+ function EyeOffIcon(props) {
279
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("svg", { ...iconProps4(props), children: [
280
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
281
+ "path",
282
+ {
283
+ d: "M10.58 7.16A6.1 6.1 0 0 1 12 7c6 0 9.1 5 9.1 5a16.1 16.1 0 0 1-2.54 2.84M13.28 16.83A6.1 6.1 0 0 1 12 17c-6 0-9.1-5-9.1-5a16.1 16.1 0 0 1 2.59-2.87",
284
+ stroke: "currentColor",
285
+ strokeWidth: "1.8",
286
+ strokeLinecap: "round",
287
+ strokeLinejoin: "round"
288
+ }
289
+ ),
290
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
291
+ "path",
292
+ {
293
+ d: "m3.5 3.5 17 17M10.1 10.1a2.7 2.7 0 0 0 3.8 3.8",
294
+ stroke: "currentColor",
295
+ strokeWidth: "1.8",
296
+ strokeLinecap: "round"
297
+ }
298
+ )
299
+ ] });
300
+ }
221
301
  // Annotate the CommonJS export names for ESM import in node:
222
302
  0 && (module.exports = {
223
303
  ChevronDownIcon,
224
304
  ChevronUpIcon,
225
305
  CloseIcon,
306
+ EyeIcon,
307
+ EyeOffIcon,
308
+ MailboxIcon,
226
309
  MoreHorizontalIcon,
227
310
  MoreVerticalIcon,
311
+ PhoneIcon,
228
312
  PlusIcon,
229
313
  SearchIcon,
230
314
  arrow_left,
package/dist/icons.mjs CHANGED
@@ -2,8 +2,12 @@ import {
2
2
  ChevronDownIcon,
3
3
  ChevronUpIcon,
4
4
  CloseIcon,
5
+ EyeIcon,
6
+ EyeOffIcon,
7
+ MailboxIcon,
5
8
  MoreHorizontalIcon,
6
9
  MoreVerticalIcon,
10
+ PhoneIcon,
7
11
  PlusIcon,
8
12
  SearchIcon,
9
13
  arrow_left,
@@ -23,13 +27,17 @@ import {
23
27
  search,
24
28
  trash,
25
29
  x_close
26
- } from "./chunk-GT4546FD.mjs";
30
+ } from "./chunk-BAZJ5UJ5.mjs";
27
31
  export {
28
32
  ChevronDownIcon,
29
33
  ChevronUpIcon,
30
34
  CloseIcon,
35
+ EyeIcon,
36
+ EyeOffIcon,
37
+ MailboxIcon,
31
38
  MoreHorizontalIcon,
32
39
  MoreVerticalIcon,
40
+ PhoneIcon,
33
41
  PlusIcon,
34
42
  SearchIcon,
35
43
  arrow_left,