@sunggang/ui-lib 0.4.19 → 0.4.21

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/index.cjs.js CHANGED
@@ -7,7 +7,6 @@ var jsxRuntime = require('react/jsx-runtime');
7
7
  var React = require('react');
8
8
  var SwitchPrimitives = require('@radix-ui/react-switch');
9
9
  var utils = require('./utils.cjs.js');
10
- var index_esm = require('./index.esm.cjs.js');
11
10
  var baseSwitch = require('./baseSwitch.cjs.js');
12
11
  var dateFns = require('date-fns');
13
12
  var lucideReact = require('lucide-react');
@@ -25,6 +24,7 @@ var CustomSelect = require('./CustomSelect.cjs.js');
25
24
  require('@radix-ui/react-slot');
26
25
  require('class-variance-authority');
27
26
  require('tailwind-merge');
27
+ require('./index.esm.cjs.js');
28
28
  require('next/dynamic');
29
29
  require('./setPrototypeOf.cjs.js');
30
30
  require('./memoize-one.esm.cjs.js');
@@ -147,12 +147,11 @@ function _object_without_properties_loose$4(source, excluded) {
147
147
  return target;
148
148
  }
149
149
  var Switch = /*#__PURE__*/ React__namespace.forwardRef(function(_param, ref) {
150
- var _param_size = _param.size, size = _param_size === void 0 ? "large" : _param_size, color = _param.color, props = _object_without_properties$4(_param, [
150
+ var _param_size = _param.size, size = _param_size === void 0 ? "medium" : _param_size, _param_color = _param.color, color = _param_color === void 0 ? "blue" : _param_color, className = _param.className, props = _object_without_properties$4(_param, [
151
151
  "size",
152
- "color"
152
+ "color",
153
+ "className"
153
154
  ]);
154
- var control = index_esm.useForm().control;
155
- var name = props.name, className = props.className;
156
155
  var bgColor = color === "blue" ? "data-[state=checked]:bg-blue-500" : color === "red" ? "data-[state=checked]:bg-red-500" : color === "green" ? "data-[state=checked]:bg-green-500" : color === "yellow" ? "data-[state=checked]:bg-yellow-500" : "data-[state=checked]:bg-blue-500";
157
156
  var sizeClass = {
158
157
  small: {
@@ -168,28 +167,16 @@ var Switch = /*#__PURE__*/ React__namespace.forwardRef(function(_param, ref) {
168
167
  thumb: "h-5 w-5 data-[state=checked]:translate-x-5"
169
168
  }
170
169
  };
171
- return /*#__PURE__*/ jsxRuntime.jsx("div", {
172
- className: [
173
- "h-24 w-full",
174
- className
175
- ].join(" "),
176
- children: /*#__PURE__*/ jsxRuntime.jsx(index_esm.Controller, {
177
- name: name || "",
178
- control: control,
179
- render: function(param) {
180
- param.field;
181
- return /*#__PURE__*/ jsxRuntime.jsx(SwitchPrimitives__namespace.Root, _object_spread_props$5(_object_spread$6({
182
- className: utils.cn("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50", bgColor, sizeClass[size].root, "data-[state=unchecked]:bg-input")
183
- }, props), {
184
- ref: ref,
185
- children: /*#__PURE__*/ jsxRuntime.jsx(SwitchPrimitives__namespace.Thumb, {
186
- className: utils.cn("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0", sizeClass[size].thumb)
187
- })
188
- }));
189
- }
170
+ return /*#__PURE__*/ jsxRuntime.jsx(SwitchPrimitives__namespace.Root, _object_spread_props$5(_object_spread$6({
171
+ className: utils.cn("peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50", "data-[state=unchecked]:bg-gray-200", bgColor, sizeClass[size].root, className)
172
+ }, props), {
173
+ ref: ref,
174
+ children: /*#__PURE__*/ jsxRuntime.jsx(SwitchPrimitives__namespace.Thumb, {
175
+ className: utils.cn("pointer-events-none block rounded-full bg-white shadow-lg ring-0 transition-transform data-[state=unchecked]:translate-x-0", sizeClass[size].thumb)
190
176
  })
191
- });
177
+ }));
192
178
  });
179
+ Switch.displayName = "Switch";
193
180
 
194
181
  var phone = /^09\d{8}$/;
195
182
  var email = /^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/i;
@@ -706,6 +693,16 @@ var SingleDatePicker = function(param) {
706
693
  });
707
694
  };
708
695
 
696
+ /**
697
+ * React Date Range CSS styles as string constants
698
+ * This allows the component to inject styles dynamically without requiring external CSS imports
699
+ */ // React Date Range main styles
700
+ var REACT_DATE_RANGE_STYLES_CSS = ".rdrCalendarWrapper {\n box-sizing: border-box;\n background: #ffffff;\n display: inline-flex;\n flex-direction: column;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.rdrDateDisplay {\n display: flex;\n justify-content: space-between;\n}\n\n.rdrDateDisplayItem {\n flex: 1 1;\n width: 0;\n text-align: center;\n color: inherit;\n}\n\n.rdrDateDisplayItem + .rdrDateDisplayItem {\n margin-left: 0.833em;\n}\n\n.rdrDateDisplayItem input {\n text-align: inherit;\n}\n\n.rdrDateDisplayItem input:disabled {\n cursor: default;\n}\n\n.rdrDateDisplayItemActive {\n}\n\n.rdrMonthAndYearWrapper {\n box-sizing: inherit;\n display: flex;\n justify-content: space-between;\n}\n\n.rdrMonthAndYearPickers {\n flex: 1 1 auto;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.rdrMonthPicker {\n}\n\n.rdrYearPicker {\n}\n\n.rdrNextPrevButton {\n box-sizing: inherit;\n cursor: pointer;\n outline: none;\n}\n\n.rdrPprevButton {\n}\n\n.rdrNextButton {\n}\n\n.rdrMonths {\n display: flex;\n}\n\n.rdrMonthsVertical {\n flex-direction: column;\n}\n\n.rdrMonthsHorizontal > div > div > div {\n display: flex;\n flex-direction: row;\n}\n\n.rdrMonth {\n width: 27.667em;\n}\n\n.rdrWeekDays {\n display: flex;\n}\n\n.rdrWeekDay {\n flex-basis: calc(100% / 7);\n box-sizing: inherit;\n text-align: center;\n}\n\n.rdrDays {\n display: flex;\n flex-wrap: wrap;\n}\n\n.rdrDateDisplayWrapper {\n}\n\n.rdrMonthName {\n}\n\n.rdrInfiniteMonths {\n overflow: auto;\n}\n\n.rdrDateRangeWrapper {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.rdrDateInput {\n position: relative;\n}\n\n.rdrDateInput input {\n outline: none;\n}\n\n.rdrDateInput .rdrWarning {\n position: absolute;\n font-size: 1.6em;\n line-height: 1.6em;\n top: 0;\n right: 0.25em;\n color: #ff0000;\n}\n\n.rdrDay {\n box-sizing: inherit;\n width: calc(100% / 7);\n position: relative;\n font: inherit;\n cursor: pointer;\n}\n\n.rdrDayNumber {\n display: block;\n position: relative;\n}\n\n.rdrDayNumber span {\n color: #1d2429;\n}\n\n.rdrDayDisabled {\n cursor: not-allowed;\n}\n\n@supports (-ms-ime-align: auto) {\n .rdrDay {\n flex-basis: 14.285% !important;\n }\n}\n\n.rdrSelected,\n.rdrInRange,\n.rdrStartEdge,\n.rdrEndEdge {\n pointer-events: none;\n}\n\n.rdrInRange {\n}\n\n.rdrDayStartPreview,\n.rdrDayInPreview,\n.rdrDayEndPreview {\n pointer-events: none;\n}\n\n.rdrDayHovered {\n}\n\n.rdrDayActive {\n}\n\n.rdrDateRangePickerWrapper {\n display: inline-flex;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.rdrDefinedRangesWrapper {\n}\n\n.rdrStaticRanges {\n display: flex;\n flex-direction: column;\n}\n\n.rdrStaticRange {\n font-size: inherit;\n}\n\n.rdrStaticRangeLabel {\n}\n\n.rdrInputRanges {\n}\n\n.rdrInputRange {\n display: flex;\n}\n\n.rdrInputRangeInput {\n}";
701
+ // React Date Range theme (default) styles
702
+ var REACT_DATE_RANGE_THEME_CSS = ".rdrCalendarWrapper{\n color: #000000;\n font-size: 12px;\n}\n\n.rdrDateDisplayWrapper{\n background-color: rgb(239, 242, 247);\n}\n\n.rdrDateDisplay{\n margin: 0.833em;\n}\n\n.rdrDateDisplayItem{\n border-radius: 4px;\n background-color: rgb(255, 255, 255);\n box-shadow: 0 1px 2px 0 rgba(35, 57, 66, 0.21);\n border: 1px solid transparent;\n}\n\n.rdrDateDisplayItem input{\n cursor: pointer;\n height: 2.5em;\n line-height: 2.5em;\n border: 0px;\n background: transparent;\n width: 100%;\n color: #849095;\n }\n\n.rdrDateDisplayItemActive{\n border-color: currentColor;\n}\n\n.rdrDateDisplayItemActive input{\n color: #7d888d\n }\n\n.rdrMonthAndYearWrapper {\n align-items: center;\n height: 60px;\n padding-top: 10px;\n}\n\n.rdrMonthAndYearPickers{\n font-weight: 600;\n}\n\n.rdrMonthAndYearPickers select{\n -moz-appearance: none;\n appearance: none;\n -webkit-appearance: none;\n border: 0;\n background: transparent;\n padding: 10px 30px 10px 10px;\n border-radius: 4px;\n outline: 0;\n color: #3e484f;\n background: url(\"data:image/svg+xml;utf8,<svg width='9px' height='6px' viewBox='0 0 9 6' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'><g id='Artboard' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' transform='translate(-636.000000, -171.000000)' fill-opacity='0.368716033'><g id='input' transform='translate(172.000000, 37.000000)' fill='%230E242F' fill-rule='nonzero'><g id='Group-9' transform='translate(323.000000, 127.000000)'><path d='M142.280245,7.23952813 C141.987305,6.92353472 141.512432,6.92361662 141.219585,7.23971106 C140.926739,7.5558055 140.926815,8.06821394 141.219755,8.38420735 L145.498801,13 L149.780245,8.38162071 C150.073185,8.0656273 150.073261,7.55321886 149.780415,7.23712442 C149.487568,6.92102998 149.012695,6.92094808 148.719755,7.23694149 L145.498801,10.7113732 L142.280245,7.23952813 Z' id='arrow'></path></g></g></g></svg>\") no-repeat;\n background-position: right 8px center;\n cursor: pointer;\n text-align: center\n }\n\n.rdrMonthAndYearPickers select:hover{\n background-color: rgba(0,0,0,0.07);\n }\n\n.rdrMonthPicker, .rdrYearPicker{\n margin: 0 5px\n}\n\n.rdrNextPrevButton {\n display: block;\n width: 24px;\n height: 24px;\n margin: 0 0.833em;\n padding: 0;\n border: 0;\n border-radius: 5px;\n background: #EFF2F7\n}\n\n.rdrNextPrevButton:hover{\n background: #E1E7F0;\n }\n\n.rdrNextPrevButton i {\n display: block;\n width: 0;\n height: 0;\n padding: 0;\n text-align: center;\n border-style: solid;\n margin: auto;\n transform: translate(-3px, 0px);\n }\n\n.rdrPprevButton i {\n border-width: 4px 6px 4px 4px;\n border-color: transparent rgb(52, 73, 94) transparent transparent;\n transform: translate(-3px, 0px);\n }\n\n.rdrNextButton i {\n margin: 0 0 0 7px;\n border-width: 4px 4px 4px 6px;\n border-color: transparent transparent transparent rgb(52, 73, 94);\n transform: translate(3px, 0px);\n }\n\n.rdrWeekDays {\n padding: 0 0.833em;\n}\n\n.rdrMonth{\n padding: 0 0.833em 1.666em 0.833em;\n}\n\n.rdrMonth .rdrWeekDays {\n padding: 0;\n }\n\n.rdrMonths.rdrMonthsVertical .rdrMonth:first-child .rdrMonthName{\n display: none;\n}\n\n.rdrWeekDay {\n font-weight: 400;\n line-height: 2.667em;\n color: rgb(132, 144, 149);\n}\n\n.rdrDay {\n background: transparent;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n border: 0;\n padding: 0;\n line-height: 3.000em;\n height: 3.000em;\n text-align: center;\n color: #1d2429\n}\n\n.rdrDay:focus {\n outline: 0;\n }\n\n.rdrDayNumber {\n outline: 0;\n font-weight: 300;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n top: 5px;\n bottom: 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.rdrDayToday .rdrDayNumber span{\n font-weight: 500\n}\n\n.rdrDayToday .rdrDayNumber span:after{\n content: '';\n position: absolute;\n bottom: 4px;\n left: 50%;\n transform: translate(-50%, 0);\n width: 18px;\n height: 2px;\n border-radius: 2px;\n background: #3d91ff;\n }\n\n.rdrDayToday:not(.rdrDayPassive) .rdrInRange ~ .rdrDayNumber span:after,.rdrDayToday:not(.rdrDayPassive) .rdrStartEdge ~ .rdrDayNumber span:after,.rdrDayToday:not(.rdrDayPassive) .rdrEndEdge ~ .rdrDayNumber span:after,.rdrDayToday:not(.rdrDayPassive) .rdrSelected ~ .rdrDayNumber span:after{\n background: #fff;\n }\n\n.rdrDay:not(.rdrDayPassive) .rdrInRange ~ .rdrDayNumber span,.rdrDay:not(.rdrDayPassive) .rdrStartEdge ~ .rdrDayNumber span,.rdrDay:not(.rdrDayPassive) .rdrEndEdge ~ .rdrDayNumber span,.rdrDay:not(.rdrDayPassive) .rdrSelected ~ .rdrDayNumber span{\n color: rgba(255, 255, 255, 0.85);\n }\n\n.rdrSelected, .rdrInRange, .rdrStartEdge, .rdrEndEdge{\n background: currentColor;\n position: absolute;\n top: 5px;\n left: 0;\n right: 0;\n bottom: 5px;\n}\n\n.rdrSelected{\n left: 2px;\n right: 2px;\n}\n\n.rdrInRange{}\n\n.rdrStartEdge{\n border-top-left-radius: 1.042em;\n border-bottom-left-radius: 1.042em;\n left: 2px;\n}\n\n.rdrEndEdge{\n border-top-right-radius: 1.042em;\n border-bottom-right-radius: 1.042em;\n right: 2px;\n}\n\n.rdrSelected{\n border-radius: 1.042em;\n}\n\n.rdrDayStartOfMonth .rdrInRange, .rdrDayStartOfMonth .rdrEndEdge, .rdrDayStartOfWeek .rdrInRange, .rdrDayStartOfWeek .rdrEndEdge{\n border-top-left-radius: 1.042em;\n border-bottom-left-radius: 1.042em;\n left: 2px;\n }\n\n.rdrDayEndOfMonth .rdrInRange, .rdrDayEndOfMonth .rdrStartEdge, .rdrDayEndOfWeek .rdrInRange, .rdrDayEndOfWeek .rdrStartEdge{\n border-top-right-radius: 1.042em;\n border-bottom-right-radius: 1.042em;\n right: 2px;\n }\n\n.rdrDayStartOfMonth .rdrDayInPreview, .rdrDayStartOfMonth .rdrDayEndPreview, .rdrDayStartOfWeek .rdrDayInPreview, .rdrDayStartOfWeek .rdrDayEndPreview{\n border-top-left-radius: 1.333em;\n border-bottom-left-radius: 1.333em;\n border-left-width: 1px;\n left: 0px;\n }\n\n.rdrDayEndOfMonth .rdrDayInPreview, .rdrDayEndOfMonth .rdrDayStartPreview, .rdrDayEndOfWeek .rdrDayInPreview, .rdrDayEndOfWeek .rdrDayStartPreview{\n border-top-right-radius: 1.333em;\n border-bottom-right-radius: 1.333em;\n border-right-width: 1px;\n right: 0px;\n }\n\n.rdrDayStartPreview, .rdrDayInPreview, .rdrDayEndPreview{\n background: rgba(255, 255, 255, 0.09);\n position: absolute;\n top: 3px;\n left: 0px;\n right: 0px;\n bottom: 3px;\n pointer-events: none;\n border: 0px solid currentColor;\n z-index: 1;\n}\n\n.rdrDayStartPreview{\n border-top-width: 1px;\n border-left-width: 1px;\n border-bottom-width: 1px;\n border-top-left-radius: 1.333em;\n border-bottom-left-radius: 1.333em;\n left: 0px;\n}\n\n.rdrDayInPreview{\n border-top-width: 1px;\n border-bottom-width: 1px;\n}\n\n.rdrDayEndPreview{\n border-top-width: 1px;\n border-right-width: 1px;\n border-bottom-width: 1px;\n border-top-right-radius: 1.333em;\n border-bottom-right-radius: 1.333em;\n right: 2px;\n right: 0px;\n}\n\n.rdrDefinedRangesWrapper{\n font-size: 12px;\n width: 226px;\n border-right: solid 1px #eff2f7;\n background: #fff;\n}\n\n.rdrDefinedRangesWrapper .rdrStaticRangeSelected{\n color: currentColor;\n font-weight: 600;\n }\n\n.rdrStaticRange{\n border: 0;\n cursor: pointer;\n display: block;\n outline: 0;\n border-bottom: 1px solid #eff2f7;\n padding: 0;\n background: #fff\n}\n\n.rdrStaticRange:hover .rdrStaticRangeLabel,.rdrStaticRange:focus .rdrStaticRangeLabel{\n background: #eff2f7;\n }\n\n.rdrStaticRangeLabel{\n display: block;\n outline: 0;\n line-height: 18px;\n padding: 10px 20px;\n text-align: left;\n}\n\n.rdrInputRanges{\n padding: 10px 0;\n}\n\n.rdrInputRange{\n align-items: center;\n padding: 5px 20px;\n}\n\n.rdrInputRangeInput{\n width: 30px;\n height: 30px;\n line-height: 30px;\n border-radius: 4px;\n text-align: center;\n border: solid 1px rgb(222, 231, 235);\n margin-right: 10px;\n color: rgb(108, 118, 122)\n}\n\n.rdrInputRangeInput:focus, .rdrInputRangeInput:hover{\n border-color: rgb(180, 191, 196);\n outline: 0;\n color: #333;\n }\n\n.rdrCalendarWrapper:not(.rdrDateRangeWrapper) .rdrDayHovered .rdrDayNumber:after{\n content: '';\n border: 1px solid currentColor;\n border-radius: 1.333em;\n position: absolute;\n top: -2px;\n bottom: -2px;\n left: 0px;\n right: 0px;\n background: transparent;\n}\n\n.rdrDayPassive{\n pointer-events: none;\n}\n\n.rdrDayPassive .rdrDayNumber span{\n color: #d5dce0;\n }\n\n.rdrDayPassive .rdrInRange, .rdrDayPassive .rdrStartEdge, .rdrDayPassive .rdrEndEdge, .rdrDayPassive .rdrSelected, .rdrDayPassive .rdrDayStartPreview, .rdrDayPassive .rdrDayInPreview, .rdrDayPassive .rdrDayEndPreview{\n display: none;\n }\n\n.rdrDayDisabled {\n background-color: rgb(248, 248, 248);\n}\n\n.rdrDayDisabled .rdrDayNumber span{\n color: #aeb9bf;\n }\n\n.rdrDayDisabled .rdrInRange, .rdrDayDisabled .rdrStartEdge, .rdrDayDisabled .rdrEndEdge, .rdrDayDisabled .rdrSelected, .rdrDayDisabled .rdrDayStartPreview, .rdrDayDisabled .rdrDayInPreview, .rdrDayDisabled .rdrDayEndPreview{\n filter: grayscale(100%) opacity(60%);\n }\n\n.rdrMonthName{\n text-align: left;\n font-weight: 600;\n color: #849095;\n padding: 0.833em;\n}";
703
+ // Combined CSS (styles + theme)
704
+ var REACT_DATE_RANGE_COMBINED_CSS = REACT_DATE_RANGE_STYLES_CSS + "\n\n" + REACT_DATE_RANGE_THEME_CSS;
705
+
709
706
  function _array_like_to_array$1(arr, len) {
710
707
  if (len == null || len > arr.length) len = arr.length;
711
708
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -754,8 +751,10 @@ function _unsupported_iterable_to_array$1(o, minLen) {
754
751
  }
755
752
  var ReactDateRange = function(param) {
756
753
  var className = param.className, item = param.item, onChange = param.onChange, dates = param.dates, date = param.date;
754
+ // 動態注入 React Date Range CSS,避免外部專案需要手動 import CSS
755
+ baseSwitch.useInjectGlobalCSS(REACT_DATE_RANGE_COMBINED_CSS, "react-date-range-styles");
757
756
  var _useState = _sliced_to_array$1(React.useState("zhTW"), 1), locale = _useState[0];
758
- var _useState1 = _sliced_to_array$1(React.useState(""), 2), calendarData = _useState1[0], setCalendarData = _useState1[1];
757
+ var _useState1 = _sliced_to_array$1(React.useState(null), 2), calendarData = _useState1[0], setCalendarData = _useState1[1];
759
758
  var _useState2 = _sliced_to_array$1(React.useState({
760
759
  startDate: new Date(),
761
760
  endDate: dateFns.addDays(new Date(), 7),
@@ -774,7 +773,7 @@ var ReactDateRange = function(param) {
774
773
  }
775
774
  };
776
775
  React.useEffect(function() {
777
- setCalendarData(date);
776
+ setCalendarData(date || null);
778
777
  }, [
779
778
  date
780
779
  ]);