lupine.components 1.1.13 → 1.1.14

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 (92) hide show
  1. package/README.md +3 -3
  2. package/package.json +42 -42
  3. package/src/components/action-sheet.tsx +419 -419
  4. package/src/components/button-push-animation.tsx +147 -138
  5. package/src/components/button.tsx +55 -55
  6. package/src/components/desktop-footer.tsx +17 -17
  7. package/src/components/desktop-header.tsx +52 -52
  8. package/src/components/drag-refresh.tsx +129 -129
  9. package/src/components/editable-label.tsx +83 -83
  10. package/src/components/float-window.tsx +233 -233
  11. package/src/components/grid.tsx +18 -18
  12. package/src/components/html-load.tsx +41 -41
  13. package/src/components/html-var.tsx +81 -81
  14. package/src/components/index.ts +43 -44
  15. package/src/components/input-with-title.tsx +24 -24
  16. package/src/components/link-item.tsx +13 -13
  17. package/src/components/link-list.tsx +62 -62
  18. package/src/components/menu-bar.tsx +219 -219
  19. package/src/components/menu-item-props.tsx +13 -13
  20. package/src/components/menu-sidebar.tsx +325 -318
  21. package/src/components/message-box.tsx +44 -44
  22. package/src/components/meta-data.tsx +36 -36
  23. package/src/components/meta-description.tsx +12 -12
  24. package/src/components/mobile-components/icon-menu-item-props.ts +6 -6
  25. package/src/components/mobile-components/index.ts +8 -9
  26. package/src/components/mobile-components/mobile-footer-menu.tsx +95 -95
  27. package/src/components/mobile-components/mobile-header-component.tsx +101 -101
  28. package/src/components/mobile-components/mobile-header-title-icon.tsx +109 -101
  29. package/src/components/mobile-components/mobile-header-with-back.tsx +127 -117
  30. package/src/components/mobile-components/mobile-side-menu.tsx +154 -154
  31. package/src/components/mobile-components/mobile-top-sys-icon.tsx +18 -18
  32. package/src/components/mobile-components/mobile-top-sys-menu.tsx +62 -62
  33. package/src/components/modal.tsx +33 -33
  34. package/src/components/notice-message.tsx +118 -118
  35. package/src/components/page-title.tsx +6 -6
  36. package/src/components/paging-link.tsx +175 -175
  37. package/src/components/panel.tsx +21 -21
  38. package/src/components/popup-menu.tsx +289 -289
  39. package/src/components/progress.tsx +91 -91
  40. package/src/components/radio-label-component.tsx +36 -36
  41. package/src/components/redirect.tsx +19 -19
  42. package/src/components/resizable-splitter.tsx +128 -128
  43. package/src/components/select-angle-component.tsx +127 -127
  44. package/src/components/select-with-title.tsx +37 -37
  45. package/src/components/slide-tab-component.tsx +144 -149
  46. package/src/components/spinner.tsx +106 -100
  47. package/src/components/stars-component.tsx +66 -66
  48. package/src/components/svg.tsx +24 -24
  49. package/src/components/tabs.tsx +279 -279
  50. package/src/components/text-glow.tsx +37 -37
  51. package/src/components/text-scale.tsx +42 -42
  52. package/src/components/text-wave.tsx +55 -55
  53. package/src/components/theme-selector.tsx +28 -28
  54. package/src/components/toggle-base.tsx +269 -269
  55. package/src/components/toggle-switch.tsx +160 -160
  56. package/src/frames/index.ts +3 -3
  57. package/src/frames/responsive-frame.tsx +83 -83
  58. package/src/frames/slider-frame.tsx +111 -111
  59. package/src/frames/top-frame.tsx +30 -30
  60. package/src/index.ts +5 -5
  61. package/src/lib/back-action-helper.ts +54 -54
  62. package/src/lib/base62.ts +23 -23
  63. package/src/lib/blob-utils.ts +23 -23
  64. package/src/lib/calculate-text-width.ts +13 -13
  65. package/src/lib/date-utils.ts +317 -317
  66. package/src/lib/deep-merge.ts +37 -37
  67. package/src/lib/document-ready.ts +34 -34
  68. package/src/lib/dom-utils.ts +32 -32
  69. package/src/lib/download-file.ts +118 -118
  70. package/src/lib/download-link.ts +12 -12
  71. package/src/lib/download-stream.ts +19 -19
  72. package/src/lib/drag-util.ts +118 -118
  73. package/src/lib/dynamical-load.ts +134 -134
  74. package/src/lib/encode-html.ts +27 -27
  75. package/src/lib/find-parent-tag.ts +8 -8
  76. package/src/lib/format-bytes.ts +11 -11
  77. package/src/lib/index.ts +24 -24
  78. package/src/lib/lite-dom.ts +225 -225
  79. package/src/lib/message-hub.ts +103 -104
  80. package/src/lib/observable.ts +188 -188
  81. package/src/lib/path-utils.ts +42 -42
  82. package/src/lib/promise-timeout.ts +1 -1
  83. package/src/lib/simple-storage.ts +40 -40
  84. package/src/lib/stop-propagation.ts +7 -7
  85. package/src/lib/upload-file.ts +101 -101
  86. package/src/styles/base-themes.ts +17 -17
  87. package/src/styles/dark-themes.ts +99 -99
  88. package/src/styles/index.ts +5 -5
  89. package/src/styles/light-themes.ts +106 -106
  90. package/src/styles/media-query.ts +93 -93
  91. package/src/styles/shared-themes.ts +57 -57
  92. package/tsconfig.json +113 -113
@@ -1,160 +1,160 @@
1
- import { bindGlobalStyle, CssProps } from 'lupine.web';
2
- import { ToggleBase, ToggleBaseHookProps } from './toggle-base';
3
-
4
- export enum ToggleSwitchSize {
5
- SmallSmall = 'smallsmall',
6
- Small = 'small',
7
- Medium = 'medium',
8
- Large = 'large',
9
- }
10
- export type ToggleSwitchProps = {
11
- size: ToggleSwitchSize;
12
- text?: { on: string; off: string };
13
- textWidth?: string;
14
- disabled?: boolean;
15
- checked?: boolean;
16
- onClick?: (checked: boolean) => void;
17
- hook?: ToggleBaseHookProps;
18
- };
19
- export const ToggleSwitch = (props: ToggleSwitchProps) => {
20
- const sizeH =
21
- props.size === ToggleSwitchSize.SmallSmall
22
- ? 16
23
- : props.size === ToggleSwitchSize.Small
24
- ? 22
25
- : props.size === ToggleSwitchSize.Large
26
- ? 42
27
- : 34;
28
- const classSize =
29
- props.size === ToggleSwitchSize.SmallSmall
30
- ? 'smallsmall'
31
- : props.size === ToggleSwitchSize.Small
32
- ? 'small'
33
- : props.size === ToggleSwitchSize.Large
34
- ? 'large'
35
- : '';
36
-
37
- const css: CssProps = {
38
- width: `100%`,
39
- height: `100%`,
40
- display: 'flex',
41
- alignItems: 'center',
42
- justifyContent: 'center',
43
- '& .ts-slider': {
44
- position: 'relative',
45
- cursor: 'pointer',
46
- backgroundColor: 'var(--toggle-background-color, #c7c7c7)',
47
- transition: '.4s',
48
- borderRadius: '34px',
49
- height: '100%',
50
- display: 'flex',
51
- padding: '0 27px 0 37px',
52
- alignItems: 'center',
53
- },
54
- '&.smallsmall .ts-slider': {
55
- padding: '0 8px 0 22px',
56
- fontSize: '0.65rem',
57
- },
58
- '&.small .ts-slider': {
59
- padding: '0 17px 0 27px',
60
- fontSize: '0.85rem',
61
- },
62
- '&.large .ts-slider': {
63
- padding: '0 37px 0 57px',
64
- },
65
-
66
- '& .ts-slider .ts-circle': {
67
- position: 'absolute',
68
- content: '',
69
- height: '26px',
70
- width: '26px',
71
- left: '4px',
72
- bottom: '4px',
73
- backgroundColor: 'var(--toggle-ball-color, #fff)',
74
- transition: '.4s',
75
- borderRadius: '50%',
76
- },
77
- '&.smallsmall .ts-slider .ts-circle': {
78
- height: '12px',
79
- width: '12px',
80
- left: '2px',
81
- bottom: '2px',
82
- },
83
- '&.small .ts-slider .ts-circle': {
84
- height: '18px',
85
- width: '18px',
86
- left: '3px',
87
- bottom: '2px',
88
- },
89
- '&.large .ts-slider .ts-circle': {
90
- height: '38px',
91
- width: '38px',
92
- left: '4px',
93
- bottom: '2px',
94
- },
95
-
96
- '&.toggle-on .ts-on-text': {
97
- display: 'block',
98
- },
99
- '&.toggle-off .ts-off-text': {
100
- display: 'block',
101
- },
102
-
103
- '&.toggle-on .ts-slider': {
104
- backgroundColor: 'var(--primary-accent-color, #0a74c9)',
105
- padding: '0 47px 0 17px',
106
- },
107
- '&.smallsmall.toggle-on .ts-slider': {
108
- padding: '0 18px 0 12px',
109
- },
110
- '&.small.toggle-on .ts-slider': {
111
- padding: '0 27px 0 17px',
112
- },
113
- '&.large.toggle-on .ts-slider': {
114
- padding: '0 72px 0 22px',
115
- },
116
-
117
- '&.toggle-on .ts-slider .ts-circle': {
118
- left: 'unset',
119
- right: '3px',
120
- },
121
- '&.disabled .ts-slider': {
122
- cursor: 'not-allowed',
123
- opacity: 'var(--primary-disabled-opacity)',
124
- },
125
- };
126
-
127
- // this is a sample to add variables for a theme
128
- const cssTheme: CssProps = {
129
- '[data-theme="dark" i]': {
130
- '--toggle-ball-color': '#000000',
131
- '--toggle-background-color': '#262626',
132
- },
133
- };
134
-
135
- bindGlobalStyle('toggle-switch-theme', cssTheme, false, true);
136
- bindGlobalStyle('toggle-switch-component', css);
137
-
138
- const cssSize: CssProps = {
139
- '& .ts-on-text, & .ts-off-text': {
140
- display: 'none',
141
- width: props.textWidth,
142
- },
143
- };
144
- return (
145
- <ToggleBase {...props} size={{ w: 'auto', h: sizeH }}>
146
- <div
147
- css={cssSize}
148
- class={`toggle-switch-component toggle-placeholder ${props.checked ? 'toggle-on' : 'toggle-off'}${
149
- props.disabled ? ' disabled' : ''
150
- } ${classSize}`}
151
- >
152
- <span class='ts-slider'>
153
- <span class='ts-on-text'>{props.text?.on}</span>
154
- <span class='ts-circle'></span>
155
- <span class='ts-off-text'>{props.text?.off}</span>
156
- </span>
157
- </div>
158
- </ToggleBase>
159
- );
160
- };
1
+ import { bindGlobalStyle, CssProps } from 'lupine.web';
2
+ import { ToggleBase, ToggleBaseHookProps } from './toggle-base';
3
+
4
+ export enum ToggleSwitchSize {
5
+ SmallSmall = 'smallsmall',
6
+ Small = 'small',
7
+ Medium = 'medium',
8
+ Large = 'large',
9
+ }
10
+ export type ToggleSwitchProps = {
11
+ size: ToggleSwitchSize;
12
+ text?: { on: string; off: string };
13
+ textWidth?: string;
14
+ disabled?: boolean;
15
+ checked?: boolean;
16
+ onClick?: (checked: boolean) => void;
17
+ hook?: ToggleBaseHookProps;
18
+ };
19
+ export const ToggleSwitch = (props: ToggleSwitchProps) => {
20
+ const sizeH =
21
+ props.size === ToggleSwitchSize.SmallSmall
22
+ ? 16
23
+ : props.size === ToggleSwitchSize.Small
24
+ ? 22
25
+ : props.size === ToggleSwitchSize.Large
26
+ ? 42
27
+ : 34;
28
+ const classSize =
29
+ props.size === ToggleSwitchSize.SmallSmall
30
+ ? 'smallsmall'
31
+ : props.size === ToggleSwitchSize.Small
32
+ ? 'small'
33
+ : props.size === ToggleSwitchSize.Large
34
+ ? 'large'
35
+ : '';
36
+
37
+ const css: CssProps = {
38
+ width: `100%`,
39
+ height: `100%`,
40
+ display: 'flex',
41
+ alignItems: 'center',
42
+ justifyContent: 'center',
43
+ '& .ts-slider': {
44
+ position: 'relative',
45
+ cursor: 'pointer',
46
+ backgroundColor: 'var(--toggle-background-color, #c7c7c7)',
47
+ transition: '.4s',
48
+ borderRadius: '34px',
49
+ height: '100%',
50
+ display: 'flex',
51
+ padding: '0 27px 0 37px',
52
+ alignItems: 'center',
53
+ },
54
+ '&.smallsmall .ts-slider': {
55
+ padding: '0 8px 0 22px',
56
+ fontSize: '0.65rem',
57
+ },
58
+ '&.small .ts-slider': {
59
+ padding: '0 17px 0 27px',
60
+ fontSize: '0.85rem',
61
+ },
62
+ '&.large .ts-slider': {
63
+ padding: '0 37px 0 57px',
64
+ },
65
+
66
+ '& .ts-slider .ts-circle': {
67
+ position: 'absolute',
68
+ content: '',
69
+ height: '26px',
70
+ width: '26px',
71
+ left: '4px',
72
+ bottom: '4px',
73
+ backgroundColor: 'var(--toggle-ball-color, #fff)',
74
+ transition: '.4s',
75
+ borderRadius: '50%',
76
+ },
77
+ '&.smallsmall .ts-slider .ts-circle': {
78
+ height: '12px',
79
+ width: '12px',
80
+ left: '2px',
81
+ bottom: '2px',
82
+ },
83
+ '&.small .ts-slider .ts-circle': {
84
+ height: '18px',
85
+ width: '18px',
86
+ left: '3px',
87
+ bottom: '2px',
88
+ },
89
+ '&.large .ts-slider .ts-circle': {
90
+ height: '38px',
91
+ width: '38px',
92
+ left: '4px',
93
+ bottom: '2px',
94
+ },
95
+
96
+ '&.toggle-on .ts-on-text': {
97
+ display: 'block',
98
+ },
99
+ '&.toggle-off .ts-off-text': {
100
+ display: 'block',
101
+ },
102
+
103
+ '&.toggle-on .ts-slider': {
104
+ backgroundColor: 'var(--primary-accent-color, #0a74c9)',
105
+ padding: '0 47px 0 17px',
106
+ },
107
+ '&.smallsmall.toggle-on .ts-slider': {
108
+ padding: '0 18px 0 12px',
109
+ },
110
+ '&.small.toggle-on .ts-slider': {
111
+ padding: '0 27px 0 17px',
112
+ },
113
+ '&.large.toggle-on .ts-slider': {
114
+ padding: '0 72px 0 22px',
115
+ },
116
+
117
+ '&.toggle-on .ts-slider .ts-circle': {
118
+ left: 'unset',
119
+ right: '3px',
120
+ },
121
+ '&.disabled .ts-slider': {
122
+ cursor: 'not-allowed',
123
+ opacity: 'var(--primary-disabled-opacity)',
124
+ },
125
+ };
126
+
127
+ // this is a sample to add variables for a theme
128
+ const cssTheme: CssProps = {
129
+ '[data-theme="dark" i]': {
130
+ '--toggle-ball-color': '#000000',
131
+ '--toggle-background-color': '#262626',
132
+ },
133
+ };
134
+
135
+ bindGlobalStyle('toggle-switch-theme', cssTheme, false, true);
136
+ bindGlobalStyle('toggle-switch-component', css);
137
+
138
+ const cssSize: CssProps = {
139
+ '& .ts-on-text, & .ts-off-text': {
140
+ display: 'none',
141
+ width: props.textWidth,
142
+ },
143
+ };
144
+ return (
145
+ <ToggleBase {...props} size={{ w: 'auto', h: sizeH }}>
146
+ <div
147
+ css={cssSize}
148
+ class={`toggle-switch-component toggle-placeholder ${props.checked ? 'toggle-on' : 'toggle-off'}${
149
+ props.disabled ? ' disabled' : ''
150
+ } ${classSize}`}
151
+ >
152
+ <span class='ts-slider'>
153
+ <span class='ts-on-text'>{props.text?.on}</span>
154
+ <span class='ts-circle'></span>
155
+ <span class='ts-off-text'>{props.text?.off}</span>
156
+ </span>
157
+ </div>
158
+ </ToggleBase>
159
+ );
160
+ };
@@ -1,3 +1,3 @@
1
- export * from './responsive-frame';
2
- export * from './top-frame';
3
- export * from './slider-frame';
1
+ export * from './responsive-frame';
2
+ export * from './top-frame';
3
+ export * from './slider-frame';
@@ -1,83 +1,83 @@
1
- /* ResponsiveFrame for desktop and mobile
2
- sliderFrameHook is for slider frame from right or bottom used in side-menu
3
- */
4
-
5
- import { VNode, CssProps, MediaQueryRange, SliderFrameHookProps, SliderFrame } from 'lupine.components';
6
- import { MobileFooterMenu } from '../components/mobile-components/mobile-footer-menu';
7
- import { DesktopFooter } from '../components/desktop-footer';
8
- import { DesktopHeader } from '../components/desktop-header';
9
- import { MobileHeaderComponent } from '../components/mobile-components/mobile-header-component';
10
- import { MobileSideMenu } from '../components/mobile-components/mobile-side-menu';
11
- import { IconMenuItemProps } from '../components/mobile-components/icon-menu-item-props';
12
-
13
- export interface ResponsiveFrameProps {
14
- placeholderClassname: string;
15
- mainContent: VNode<any>;
16
- desktopHeaderTitle: string;
17
- desktopFooterTitle: string;
18
- desktopTopMenu: IconMenuItemProps[];
19
- mobileBottomMenu: IconMenuItemProps[];
20
- mobileSideMenuContent: VNode<any>;
21
- sliderFrameHook: SliderFrameHookProps;
22
- }
23
- export const ResponsiveFrame = async (props: ResponsiveFrameProps) => {
24
- const cssContainer: CssProps = {
25
- display: 'flex',
26
- flexDirection: 'column',
27
- width: '100%',
28
- height: '100%',
29
- minHeight: '100%',
30
- '.frame-top-menu': {
31
- display: 'flex',
32
- flexDirection: 'column',
33
- width: '100vw',
34
- backgroundColor: 'var(--activatable-bg-color-normal)',
35
- },
36
- '.frame-content': {
37
- display: 'flex',
38
- flex: '1',
39
- flexDirection: 'column',
40
- overflowY: 'auto',
41
- scrollbarWidth: 'none',
42
- '&::-webkit-scrollbar': {
43
- display: 'none',
44
- },
45
- },
46
- '.content-block': {
47
- display: 'flex',
48
- flex: '1',
49
- flexDirection: 'column',
50
- overflowY: 'auto',
51
- scrollbarWidth: 'none',
52
- },
53
- '.content-block::-webkit-scrollbar': {
54
- display: 'none',
55
- },
56
- '.content-block .padding-block': {
57
- padding: '0 16px',
58
- },
59
- [MediaQueryRange.TabletBelow]: {
60
- '.frame-footer .d-footer-box, .frame-top-menu .desktop-menu-box': {
61
- display: 'none',
62
- },
63
- },
64
- };
65
-
66
- return (
67
- <div css={cssContainer} class='responsive-frame'>
68
- <SliderFrame hook={props.sliderFrameHook} />
69
- <div class='frame-top-menu'>
70
- <DesktopHeader title={props.desktopHeaderTitle} items={props.desktopTopMenu}></DesktopHeader>
71
- <MobileHeaderComponent></MobileHeaderComponent>
72
- </div>
73
- <div class='frame-content'>
74
- <MobileSideMenu>{props.mobileSideMenuContent}</MobileSideMenu>
75
- <div class={'content-block ' + props.placeholderClassname}>{props.mainContent}</div>
76
- <div class='frame-footer'>
77
- <DesktopFooter title={props.desktopFooterTitle}></DesktopFooter>
78
- <MobileFooterMenu items={props.mobileBottomMenu}></MobileFooterMenu>
79
- </div>
80
- </div>
81
- </div>
82
- );
83
- };
1
+ /* ResponsiveFrame for desktop and mobile
2
+ sliderFrameHook is for slider frame from right or bottom used in side-menu
3
+ */
4
+
5
+ import { VNode, CssProps, MediaQueryRange, SliderFrameHookProps, SliderFrame } from 'lupine.components';
6
+ import { MobileFooterMenu } from '../components/mobile-components/mobile-footer-menu';
7
+ import { DesktopFooter } from '../components/desktop-footer';
8
+ import { DesktopHeader } from '../components/desktop-header';
9
+ import { MobileHeaderComponent } from '../components/mobile-components/mobile-header-component';
10
+ import { MobileSideMenu } from '../components/mobile-components/mobile-side-menu';
11
+ import { IconMenuItemProps } from '../components/mobile-components/icon-menu-item-props';
12
+
13
+ export interface ResponsiveFrameProps {
14
+ placeholderClassname: string;
15
+ mainContent: VNode<any>;
16
+ desktopHeaderTitle: string;
17
+ desktopFooterTitle: string;
18
+ desktopTopMenu: IconMenuItemProps[];
19
+ mobileBottomMenu: IconMenuItemProps[];
20
+ mobileSideMenuContent: VNode<any>;
21
+ sliderFrameHook: SliderFrameHookProps;
22
+ }
23
+ export const ResponsiveFrame = async (props: ResponsiveFrameProps) => {
24
+ const cssContainer: CssProps = {
25
+ display: 'flex',
26
+ flexDirection: 'column',
27
+ width: '100%',
28
+ height: '100%',
29
+ minHeight: '100%',
30
+ '.frame-top-menu': {
31
+ display: 'flex',
32
+ flexDirection: 'column',
33
+ width: '100vw',
34
+ backgroundColor: 'var(--activatable-bg-color-normal)',
35
+ },
36
+ '.frame-content': {
37
+ display: 'flex',
38
+ flex: '1',
39
+ flexDirection: 'column',
40
+ overflowY: 'auto',
41
+ scrollbarWidth: 'none',
42
+ '&::-webkit-scrollbar': {
43
+ display: 'none',
44
+ },
45
+ },
46
+ '.content-block': {
47
+ display: 'flex',
48
+ flex: '1',
49
+ flexDirection: 'column',
50
+ overflowY: 'auto',
51
+ scrollbarWidth: 'none',
52
+ },
53
+ '.content-block::-webkit-scrollbar': {
54
+ display: 'none',
55
+ },
56
+ '.content-block .padding-block': {
57
+ padding: '0 16px',
58
+ },
59
+ [MediaQueryRange.TabletBelow]: {
60
+ '.frame-footer .d-footer-box, .frame-top-menu .desktop-menu-box': {
61
+ display: 'none',
62
+ },
63
+ },
64
+ };
65
+
66
+ return (
67
+ <div css={cssContainer} class='responsive-frame'>
68
+ <SliderFrame hook={props.sliderFrameHook} />
69
+ <div class='frame-top-menu'>
70
+ <DesktopHeader title={props.desktopHeaderTitle} items={props.desktopTopMenu}></DesktopHeader>
71
+ <MobileHeaderComponent></MobileHeaderComponent>
72
+ </div>
73
+ <div class='frame-content'>
74
+ <MobileSideMenu>{props.mobileSideMenuContent}</MobileSideMenu>
75
+ <div class={'content-block ' + props.placeholderClassname}>{props.mainContent}</div>
76
+ <div class='frame-footer'>
77
+ <DesktopFooter title={props.desktopFooterTitle}></DesktopFooter>
78
+ <MobileFooterMenu items={props.mobileBottomMenu}></MobileFooterMenu>
79
+ </div>
80
+ </div>
81
+ </div>
82
+ );
83
+ };