@bookklik/senangstart-css 0.2.9 → 0.2.12

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 (69) hide show
  1. package/.agent/skills/add-utility/SKILL.md +65 -0
  2. package/.agent/workflows/add-utility.md +2 -0
  3. package/.agent/workflows/build.md +2 -0
  4. package/.agent/workflows/dev.md +2 -0
  5. package/AGENTS.md +30 -0
  6. package/dist/senangstart-css.js +607 -180
  7. package/dist/senangstart-css.min.js +234 -195
  8. package/dist/senangstart-tw.js +274 -8
  9. package/dist/senangstart-tw.min.js +1 -1
  10. package/docs/SYNTAX-REFERENCE.md +1731 -1590
  11. package/docs/guide/preflight.md +20 -1
  12. package/docs/ms/guide/preflight.md +19 -0
  13. package/docs/ms/reference/breakpoints.md +14 -0
  14. package/docs/ms/reference/visual/border-radius.md +50 -10
  15. package/docs/ms/reference/visual/contain.md +57 -0
  16. package/docs/ms/reference/visual/content-visibility.md +53 -0
  17. package/docs/ms/reference/visual/placeholder-color.md +92 -0
  18. package/docs/ms/reference/visual/ring-color.md +2 -2
  19. package/docs/ms/reference/visual/ring-offset.md +3 -3
  20. package/docs/ms/reference/visual/ring.md +5 -5
  21. package/docs/ms/reference/visual/writing-mode.md +53 -0
  22. package/docs/ms/reference/visual.md +6 -0
  23. package/docs/public/assets/senangstart-css.min.js +234 -195
  24. package/docs/public/llms.txt +45 -12
  25. package/docs/reference/breakpoints.md +14 -0
  26. package/docs/reference/visual/border-radius.md +50 -10
  27. package/docs/reference/visual/contain.md +57 -0
  28. package/docs/reference/visual/content-visibility.md +53 -0
  29. package/docs/reference/visual/placeholder-color.md +92 -0
  30. package/docs/reference/visual/ring-color.md +2 -2
  31. package/docs/reference/visual/ring-offset.md +3 -3
  32. package/docs/reference/visual/ring.md +5 -5
  33. package/docs/reference/visual/writing-mode.md +53 -0
  34. package/docs/reference/visual.md +7 -0
  35. package/docs/syntax-reference.json +2185 -2009
  36. package/package.json +1 -1
  37. package/scripts/convert-tailwind.js +300 -26
  38. package/scripts/generate-docs.js +403 -403
  39. package/src/cdn/senangstart-engine.js +5 -5
  40. package/src/cdn/tw-conversion-engine.js +305 -8
  41. package/src/cli/commands/build.js +51 -13
  42. package/src/cli/commands/dev.js +157 -93
  43. package/src/compiler/generators/css.js +467 -208
  44. package/src/compiler/generators/preflight.js +26 -13
  45. package/src/compiler/generators/typescript.js +3 -1
  46. package/src/compiler/index.js +27 -3
  47. package/src/compiler/parser.js +13 -6
  48. package/src/compiler/tokenizer.js +25 -23
  49. package/src/config/defaults.js +3 -0
  50. package/src/core/tokenizer-core.js +46 -19
  51. package/src/definitions/index.js +4 -1
  52. package/src/definitions/visual-borders.js +10 -10
  53. package/src/definitions/visual-performance.js +126 -0
  54. package/src/definitions/visual.js +25 -9
  55. package/src/utils/common.js +456 -27
  56. package/src/utils/node-io.js +82 -0
  57. package/tests/integration/dev-recovery.test.js +231 -0
  58. package/tests/unit/cli/memory-limits.test.js +169 -0
  59. package/tests/unit/compiler/css-generation-error-handling.test.js +204 -0
  60. package/tests/unit/compiler/generators/css-errors.test.js +102 -0
  61. package/tests/unit/compiler/generators/css.test.js +102 -5
  62. package/tests/unit/convert-tailwind.test.js +518 -431
  63. package/tests/unit/utils/common.test.js +376 -26
  64. package/tests/unit/utils/file-timeout.test.js +154 -0
  65. package/tests/unit/utils/theme-validation.test.js +181 -0
  66. package/tests/unit/compiler/generators/css.coverage.test.js +0 -833
  67. package/tests/unit/convert-tailwind.cli.test.js +0 -95
  68. package/tests/unit/security.test.js +0 -206
  69. /package/tests/unit/{convert-tailwind.coverage.test.js → convert-tailwind-edgecases.test.js} +0 -0
@@ -142,6 +142,60 @@
142
142
  "9xl": "hero"
143
143
  // 8rem → hero
144
144
  };
145
+ var lineHeightScale = {
146
+ none: "none",
147
+ // line-height: 1
148
+ tight: "tight",
149
+ // line-height: 1.25
150
+ snug: "snug",
151
+ // line-height: 1.375
152
+ normal: "normal",
153
+ // line-height: 1.5
154
+ relaxed: "relaxed",
155
+ // line-height: 1.625
156
+ loose: "loose"
157
+ // line-height: 2
158
+ };
159
+ var letterSpacingScale = {
160
+ tighter: "tighter",
161
+ // letter-spacing: -0.05em
162
+ tight: "tight",
163
+ // letter-spacing: -0.025em
164
+ normal: "normal",
165
+ // letter-spacing: 0
166
+ wide: "wide",
167
+ // letter-spacing: 0.025em
168
+ wider: "wider",
169
+ // letter-spacing: 0.05em
170
+ widest: "widest"
171
+ // letter-spacing: 0.1em
172
+ };
173
+ var zIndexScale = {
174
+ 0: "base",
175
+ // z-index: 0
176
+ 10: "low",
177
+ // z-index: 10
178
+ 20: "low",
179
+ // z-index: 20
180
+ 30: "low",
181
+ // z-index: 30
182
+ 40: "low",
183
+ // z-index: 40
184
+ 50: "mid",
185
+ // z-index: 50
186
+ 60: "high",
187
+ // z-index: 60
188
+ 70: "high",
189
+ // z-index: 70
190
+ 80: "high",
191
+ // z-index: 80
192
+ 90: "high",
193
+ // z-index: 90
194
+ 100: "high",
195
+ // z-index: 100
196
+ auto: "auto"
197
+ // z-index: auto
198
+ };
145
199
  var fractionScale = {
146
200
  "1/2": "half",
147
201
  // 50%
@@ -218,26 +272,96 @@
218
272
  "object-scale-down": "object:scale-down"
219
273
  };
220
274
  var visualKeywords = {
275
+ // Font style
221
276
  italic: "italic",
222
277
  "not-italic": "not-italic",
278
+ // Font smoothing
223
279
  antialiased: "antialiased",
280
+ "subpixel-antialiased": "subpixel-antialiased",
281
+ // Text transform
224
282
  uppercase: "uppercase",
225
283
  lowercase: "lowercase",
226
284
  capitalize: "capitalize",
227
285
  "normal-case": "normal-case",
286
+ // Text decoration
228
287
  underline: "underline",
288
+ overline: "overline",
229
289
  "line-through": "line-through",
230
290
  "no-underline": "no-underline",
291
+ // Text decoration style
292
+ "decoration-solid": "decoration-solid",
293
+ "decoration-double": "decoration-double",
294
+ "decoration-dotted": "decoration-dotted",
295
+ "decoration-dashed": "decoration-dashed",
296
+ "decoration-wavy": "decoration-wavy",
297
+ // Text overflow
231
298
  truncate: "truncate",
232
- "cursor-pointer": "cursor:pointer",
299
+ "text-ellipsis": "text-ellipsis",
300
+ "text-clip": "text-clip",
301
+ // Text wrap
302
+ "text-wrap": "text-wrap",
303
+ "text-nowrap": "text-nowrap",
304
+ "text-balance": "text-balance",
305
+ "text-pretty": "text-pretty",
306
+ // Whitespace
307
+ "whitespace-normal": "whitespace-normal",
308
+ "whitespace-nowrap": "whitespace-nowrap",
309
+ "whitespace-pre": "whitespace-pre",
310
+ "whitespace-pre-line": "whitespace-pre-line",
311
+ "whitespace-pre-wrap": "whitespace-pre-wrap",
312
+ "whitespace-break-spaces": "whitespace-break-spaces",
313
+ // Word break
314
+ "break-normal": "break-normal",
315
+ "break-words": "break-words",
316
+ "break-all": "break-all",
317
+ "break-keep": "break-keep",
318
+ // Hyphens
319
+ "hyphens-none": "hyphens-none",
320
+ "hyphens-manual": "hyphens-manual",
321
+ "hyphens-auto": "hyphens-auto",
322
+ // List style
323
+ "list-none": "list-none",
324
+ "list-disc": "list-disc",
325
+ "list-decimal": "list-decimal",
326
+ "list-inside": "list-inside",
327
+ "list-outside": "list-outside",
328
+ // Cursor
329
+ "cursor-auto": "cursor:auto",
233
330
  "cursor-default": "cursor:default",
331
+ "cursor-pointer": "cursor:pointer",
332
+ "cursor-wait": "cursor:wait",
333
+ "cursor-text": "cursor:text",
334
+ "cursor-move": "cursor:move",
234
335
  "cursor-not-allowed": "cursor:not-allowed",
336
+ "cursor-grab": "cursor:grab",
337
+ "cursor-grabbing": "cursor:grabbing",
338
+ // User select
235
339
  "select-none": "select:none",
236
340
  "select-text": "select:text",
237
- "select-all": "select:all"
341
+ "select-all": "select:all",
342
+ "select-auto": "select:auto",
343
+ // Pointer events
344
+ "pointer-events-none": "pointer-events:none",
345
+ "pointer-events-auto": "pointer-events:auto",
346
+ // Appearance
347
+ "appearance-none": "appearance:none",
348
+ "appearance-auto": "appearance:auto",
349
+ // 3D Transforms
350
+ perspective: "perspective",
351
+ "perspective-origin": "perspective-origin",
352
+ "transform-style": "transform-style",
353
+ "backface-visibility": "backface",
354
+ mask: "mask",
355
+ "mask-image": "mask-image",
356
+ "mask-mode": "mask-mode",
357
+ "mask-origin": "mask-origin",
358
+ "mask-position": "mask-position",
359
+ "mask-repeat": "mask-repeat",
360
+ "mask-size": "mask-size",
361
+ "mask-type": "mask-type"
238
362
  };
239
363
  function getSpacing(value, exact) {
240
- if (value.startsWith("[") && value.endsWith("]")) {
364
+ if (value && value.startsWith("[") && value.endsWith("]")) {
241
365
  return value;
242
366
  }
243
367
  if (exact) {
@@ -336,6 +460,16 @@
336
460
  const size = exact ? `tw-${textSizeMatch[1]}` : fontSizeScale[textSizeMatch[1]] || textSizeMatch[1];
337
461
  return attachExtra({ cat: "visual", val: prefix + "text-size:" + size });
338
462
  }
463
+ const leadingMatch = baseClass.match(/^leading-(\[.+\]|none|tight|snug|normal|relaxed|loose)$/);
464
+ if (leadingMatch) {
465
+ const val = leadingMatch[1];
466
+ return attachExtra({ cat: "visual", val: prefix + "leading:" + (lineHeightScale[val] || val) });
467
+ }
468
+ const trackingMatch = baseClass.match(/^tracking-(\[.+\]|tighter|tight|normal|wide|wider|widest)$/);
469
+ if (trackingMatch) {
470
+ const val = trackingMatch[1];
471
+ return attachExtra({ cat: "visual", val: prefix + "tracking:" + (letterSpacingScale[val] || val) });
472
+ }
339
473
  const bgMatch = baseClass.match(
340
474
  /^bg-((?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose|white|black)(?:-\d+)?|transparent|current|inherit)$/
341
475
  );
@@ -390,7 +524,7 @@
390
524
  const isNeg = baseClass.startsWith("-");
391
525
  const side = marginMatch[1] ? "-" + marginMatch[1] : "";
392
526
  let val = getSpacing(marginMatch[2], exact);
393
- if (isNeg) {
527
+ if (isNeg && val) {
394
528
  if (val.startsWith("[") && val.endsWith("]")) {
395
529
  const inner = val.slice(1, -1);
396
530
  val = `[-${inner}]`;
@@ -456,11 +590,11 @@
456
590
  if (positionMatch) {
457
591
  const prop = positionMatch[1];
458
592
  let val = positionMatch[2];
459
- if (val === "0") {
460
- val = "none";
461
- } else if (val.startsWith("[") && val.endsWith("]")) {
593
+ if (val && val.startsWith("[") && val.endsWith("]")) {
462
594
  } else if (fractionScale[val]) {
463
595
  val = fractionScale[val];
596
+ } else if (val === "0") {
597
+ val = "0";
464
598
  } else {
465
599
  val = getSpacing(val, exact);
466
600
  }
@@ -471,7 +605,7 @@
471
605
  const isNeg = translateMatch[1] === "-";
472
606
  const axis = translateMatch[2];
473
607
  let val = translateMatch[3];
474
- if (val.startsWith("[") && val.endsWith("]")) {
608
+ if (val && val.startsWith("[") && val.endsWith("]")) {
475
609
  if (isNeg) {
476
610
  const inner = val.slice(1, -1);
477
611
  val = `[-${inner}]`;
@@ -494,6 +628,27 @@
494
628
  if (orderMatch) {
495
629
  return attachExtra({ cat: "layout", val: prefix + "order:" + orderMatch[1] });
496
630
  }
631
+ const zIndexMatch = baseClass.match(/^-?z-(\d+|auto)$/);
632
+ if (zIndexMatch) {
633
+ const isNeg = baseClass.startsWith("-");
634
+ const val = zIndexMatch[1];
635
+ let zIndexVal = zIndexScale[val] || val;
636
+ if (isNeg) {
637
+ zIndexVal = `-${zIndexVal}`;
638
+ }
639
+ return attachExtra({ cat: "layout", val: prefix + "z:" + zIndexVal });
640
+ }
641
+ const basisMatch = baseClass.match(/^basis-(\[.+\]|\d+\.?\d*|auto|full|1\/2|1\/3|2\/3|1\/4|2\/4|3\/4)$/);
642
+ if (basisMatch) {
643
+ let val = basisMatch[1];
644
+ if (val.startsWith("[") && val.endsWith("]")) {
645
+ } else if (fractionScale[val]) {
646
+ val = fractionScale[val];
647
+ } else if (val === "0") {
648
+ val = "0";
649
+ }
650
+ return attachExtra({ cat: "layout", val: prefix + "basis:" + val });
651
+ }
497
652
  const gridColsMatch = baseClass.match(/^grid-cols-(\d+|none)$/);
498
653
  if (gridColsMatch) {
499
654
  return attachExtra({ cat: "layout", val: prefix + "grid-cols:" + gridColsMatch[1] });
@@ -638,6 +793,117 @@
638
793
  // Fixed category from 'color' to 'visual'
639
794
  });
640
795
  }
796
+ const borderStyleMatch = baseClass.match(/^border-(solid|dashed|dotted|double|none)$/);
797
+ if (borderStyleMatch) {
798
+ return attachExtra({
799
+ cat: "visual",
800
+ val: prefix + "border-style:" + borderStyleMatch[1]
801
+ });
802
+ }
803
+ const blurMatch = baseClass.match(/^blur-(0|sm|md|lg|xl|2xl|3xl)$/);
804
+ if (blurMatch) {
805
+ const blurScale = {
806
+ "0": "none",
807
+ "sm": "tiny",
808
+ "md": "small",
809
+ "lg": "medium",
810
+ "xl": "big",
811
+ "2xl": "giant",
812
+ "3xl": "vast"
813
+ };
814
+ return attachExtra({
815
+ cat: "visual",
816
+ val: prefix + "blur:" + blurScale[blurMatch[1]]
817
+ });
818
+ }
819
+ const brightnessMatch = baseClass.match(/^brightness-(0|50|75|90|95|100|105|110|125|150|200)$/);
820
+ if (brightnessMatch) {
821
+ const brightnessScale = {
822
+ "0": "dim",
823
+ "50": "dim",
824
+ "75": "dark",
825
+ "90": "dark",
826
+ "95": "dark",
827
+ "100": "normal",
828
+ "105": "bright",
829
+ "110": "bright",
830
+ "125": "vivid",
831
+ "150": "vivid",
832
+ "200": "vivid"
833
+ };
834
+ return attachExtra({
835
+ cat: "visual",
836
+ val: prefix + "brightness:" + brightnessScale[brightnessMatch[1]]
837
+ });
838
+ }
839
+ const contrastMatch = baseClass.match(/^contrast-(0|50|75|100|125|150|200)$/);
840
+ if (contrastMatch) {
841
+ const contrastScale = {
842
+ "0": "low",
843
+ "50": "low",
844
+ "75": "reduced",
845
+ "100": "normal",
846
+ "125": "high",
847
+ "150": "high",
848
+ "200": "max"
849
+ };
850
+ return attachExtra({
851
+ cat: "visual",
852
+ val: prefix + "contrast:" + contrastScale[contrastMatch[1]]
853
+ });
854
+ }
855
+ const grayscaleMatch = baseClass.match(/^grayscale(0)?$/);
856
+ if (grayscaleMatch) {
857
+ const val = grayscaleMatch[1] === "0" ? "none" : "full";
858
+ return attachExtra({
859
+ cat: "visual",
860
+ val: prefix + "grayscale:" + val
861
+ });
862
+ }
863
+ const hueRotateMatch = baseClass.match(/^hue-rotate-(0|15|30|60|90|180)$/);
864
+ if (hueRotateMatch) {
865
+ return attachExtra({
866
+ cat: "visual",
867
+ val: prefix + "hue-rotate:" + hueRotateMatch[1]
868
+ });
869
+ }
870
+ const invertMatch = baseClass.match(/^invert(0)?$/);
871
+ if (invertMatch) {
872
+ const val = invertMatch[1] === "0" ? "none" : "full";
873
+ return attachExtra({
874
+ cat: "visual",
875
+ val: prefix + "invert:" + val
876
+ });
877
+ }
878
+ const saturateMatch = baseClass.match(/^saturate-(0|50|100|150|200)$/);
879
+ if (saturateMatch) {
880
+ const saturateScale = {
881
+ "0": "none",
882
+ "50": "low",
883
+ "100": "normal",
884
+ "150": "high",
885
+ "200": "vivid"
886
+ };
887
+ return attachExtra({
888
+ cat: "visual",
889
+ val: prefix + "saturate:" + saturateScale[saturateMatch[1]]
890
+ });
891
+ }
892
+ const sepiaMatch = baseClass.match(/^sepia(0)?$/);
893
+ if (sepiaMatch) {
894
+ const val = sepiaMatch[1] === "0" ? "none" : "full";
895
+ return attachExtra({
896
+ cat: "visual",
897
+ val: prefix + "sepia:" + val
898
+ });
899
+ }
900
+ const animateMatch = baseClass.match(/^animate-(none|spin|ping|pulse|bounce)$/);
901
+ if (animateMatch) {
902
+ return attachExtra({
903
+ cat: "visual",
904
+ val: prefix + "animate:" + animateMatch[1]
905
+ });
906
+ }
641
907
  return null;
642
908
  }
643
909
  function convertClasses(classString, exact) {
@@ -1,2 +1,2 @@
1
1
  /* SenangStart TW v0.2.0 | MIT */
2
- (()=>{var S={0:"none",px:"thin",.5:"regular",1:"tiny",1.5:"tiny-2x",2:"small",2.5:"small-2x",3:"small-3x",3.5:"small-4x",4:"medium",5:"medium-2x",6:"medium-3x",7:"medium-4x",8:"large",9:"large-2x",10:"large-3x",11:"large-4x",12:"big",14:"big-2x",16:"big-3x",20:"big-4x",24:"giant",28:"giant-2x",32:"giant-3x",36:"giant-4x",40:"vast",44:"vast-2x",48:"vast-3x",52:"vast-4x",56:"vast-5x",60:"vast-6x",64:"vast-7x",72:"vast-8x",80:"vast-9x",96:"vast-10x",full:"[100%]",screen:"[100vw]",auto:"auto"},ae={none:"none",sm:"small","":"small",md:"small",lg:"medium",xl:"medium","2xl":"big","3xl":"big",full:"round"},ie={none:"none",sm:"small","":"small",md:"medium",lg:"big",xl:"giant","2xl":"giant",inner:"none"},re={xs:"mini",sm:"small",base:"base",lg:"large",xl:"big","2xl":"huge","3xl":"grand","4xl":"giant","5xl":"mount","6xl":"mega","7xl":"giga","8xl":"tera","9xl":"hero"},$={"1/2":"half","1/3":"third","2/3":"third-2x","1/4":"quarter","2/4":"half","3/4":"quarter-3x",full:"full"},z={container:"container",flex:"flex","inline-flex":"inline-flex",grid:"grid","inline-grid":"inline-grid",block:"block","inline-block":"inline",hidden:"hidden","flex-row":"row","flex-col":"col","flex-row-reverse":"row-reverse","flex-col-reverse":"col-reverse","flex-wrap":"wrap","flex-nowrap":"nowrap","flex-wrap-reverse":"wrap-reverse","flex-grow":"grow","flex-grow-0":"grow-0",grow:"grow","grow-0":"grow-0","flex-shrink":"shrink","flex-shrink-0":"shrink-0",shrink:"shrink","shrink-0":"shrink-0","flex-1":"flex:1","flex-auto":"flex:auto","flex-initial":"flex:initial","flex-none":"flex:none","justify-start":"justify:start","justify-end":"justify:end","justify-center":"justify:center","justify-between":"justify:between","justify-around":"justify:around","justify-evenly":"justify:evenly","items-start":"items:start","items-end":"items:end","items-center":"items:center","items-baseline":"items:baseline","items-stretch":"items:stretch","self-auto":"self:auto","self-start":"self:start","self-end":"self:end","self-center":"self:center","self-stretch":"self:stretch",relative:"relative",absolute:"absolute",fixed:"fixed",sticky:"sticky",static:"static","overflow-auto":"overflow:auto","overflow-hidden":"overflow:hidden","overflow-visible":"overflow:visible","overflow-scroll":"overflow:scroll","object-contain":"object:contain","object-cover":"object:cover","object-fill":"object:fill","object-none":"object:none","object-scale-down":"object:scale-down"},C={italic:"italic","not-italic":"not-italic",antialiased:"antialiased",uppercase:"uppercase",lowercase:"lowercase",capitalize:"capitalize","normal-case":"normal-case",underline:"underline","line-through":"line-through","no-underline":"no-underline",truncate:"truncate","cursor-pointer":"cursor:pointer","cursor-default":"cursor:default","cursor-not-allowed":"cursor:not-allowed","select-none":"select:none","select-text":"select:text","select-all":"select:all"};function g(s,l){return s.startsWith("[")&&s.endsWith("]")?s:l?["full","screen","auto"].includes(s)?S[s]||`[${s}]`:`tw-${s}`:S[s]||`[${s}]`}var se={0:"none",1:"thin",2:"regular",3:"thick",4:"tiny",8:"small"};function k(s,l){return l?`tw-${s}`:se[s]||`[${s}px]`}function ne(s,l){let m=s.match(/^(sm:|md:|lg:|xl:|2xl:|hover:|focus:|focus-visible:|active:|disabled:|dark:|group-hover:|peer-hover:|group-focus:|peer-focus:|group-active:|peer-active:|peer-check:|group-open:|peer-open:)(.+)$/),a="",t=s,f=null;if(m){let e=m[1].slice(0,-1);if(["sm","md","lg","xl","2xl"].includes(e))a=`tw-${e}:`;else if(e.startsWith("group-")||e.startsWith("peer-")){let r={hover:"hover",focus:"focus",active:"active",open:"expanded",check:"checked"},n=e.split("-")[1];a=`${r[n]||n}:`,e.startsWith("peer-")&&(f={cat:"listens",val:"peer"})}else a=m[1];t=m[2]}if(t==="group")return{cat:"layout",val:"hoverable focusable pressable expandable"};if(t==="peer")return[{cat:"layout",val:"hoverable focusable pressable expandable"},{cat:"interact",val:"peer"}];let i=e=>e?f?Array.isArray(e)?[...e,f]:[e,f]:e:null;if(z[t])return i({cat:"layout",val:a+z[t]});if(C[t])return i({cat:"visual",val:a+C[t]});let v=t.match(/^text-((?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose|white|black)(?:-\d+)?)$/);if(v)return i({cat:"visual",val:a+"text:"+v[1]});if(["text-left","text-center","text-right","text-justify"].includes(t))return i({cat:"visual",val:a+"text:"+t.replace("text-","")});let h=t.match(/^text-(xs|sm|base|lg|xl|2xl|3xl|4xl|5xl|6xl|7xl|8xl|9xl)$/);if(h){let e=l?`tw-${h[1]}`:re[h[1]]||h[1];return i({cat:"visual",val:a+"text-size:"+e})}let d=t.match(/^bg-((?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose|white|black)(?:-\d+)?|transparent|current|inherit)$/);if(d){let e=d[1];return i(e==="transparent"?{cat:"visual",val:a+"bg:transparent"}:e==="current"?{cat:"visual",val:a+"bg:currentColor"}:e==="inherit"?{cat:"visual",val:a+"bg:inherit"}:{cat:"visual",val:a+"bg:"+e})}let u=t.match(/^border-((?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose|white|black|transparent|current|inherit)(?:-\d+)?)$/);if(u){let e=u[1];return e==="current"&&(e="currentColor"),i({cat:"visual",val:a+"border:"+e})}let o=t.match(/^border-([trbl])-((?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose|white|black|transparent|current|inherit)(?:-\d+)?)$/);if(o){let e=o[1],r=o[2];return r==="current"&&(r="currentColor"),i({cat:"visual",val:a+`border-${e}:${r}`})}let p=t.match(/^p([trblxy])?-(.+)$/);if(p){let e=p[1]?"-"+p[1]:"";return i({cat:"space",val:a+"p"+e+":"+g(p[2],l)})}let c=t.match(/^-?m([trblxy])?-(\[.+\]|\d+\.?\d*|px|auto|full|screen)$/);if(c){let e=t.startsWith("-"),r=c[1]?"-"+c[1]:"",n=g(c[2],l);return e&&(n.startsWith("[")&&n.endsWith("]")?n=`[-${n.slice(1,-1)}]`:n=`-${n}`),i({cat:"space",val:a+"m"+r+":"+n})}let w=t.match(/^gap-([xy])?-?(.+)$/);if(w){let e=w[1]?"-"+w[1]:"";return i({cat:"space",val:a+"g"+e+":"+g(w[2],l)})}let M=t.match(/^(min-w|max-w|w)-(.+)$/);if(M){let e=M[1],r=M[2],b={max:"[max-content]",min:"[min-content]",fit:"[fit-content]",prose:"[65ch]"}[r]||g(r,l);return i({cat:"space",val:a+e+":"+b})}let j=t.match(/^(min-h|max-h|h)-(.+)$/);if(j){let e=j[1],r=j[2],b={screen:"[100vh]",svh:"[100svh]",lvh:"[100lvh]",dvh:"[100dvh]",max:"[max-content]",min:"[min-content]",fit:"[fit-content]"}[r]||g(r,l);return i({cat:"space",val:a+e+":"+b})}let V=t.match(/^rounded(?:-(.+))?$/);if(V){let e=V[1]||"",r=l?e===""?"tw-DEFAULT":`tw-${e}`:ae[e]||"medium";return i({cat:"visual",val:a+"rounded:"+r})}let A=t.match(/^shadow(?:-(.+))?$/);if(A){let e=A[1]||"",r=l?e===""?"tw-DEFAULT":`tw-${e}`:ie[e]||"medium";return i({cat:"visual",val:a+"shadow:"+r})}let q=t.match(/^font-(thin|extralight|light|normal|medium|semibold|bold|extrabold|black)$/);if(q)return i({cat:"visual",val:a+"font:tw-"+q[1]});let x=t.match(/^border(?:-([trblxy]))?(?:-(\d+))?$/);if(x&&(x[2]||!x[1]&&t==="border")){let e=x[1]?"-"+x[1]+"-w":"-w",r=x[2]||"1";return i({cat:"visual",val:a+"border"+e+":"+k(r,l)})}let W=t.match(/^(top|right|bottom|left|inset|inset-x|inset-y)-(\d+|px|auto|full|1\/2|1\/3|2\/3|1\/4|2\/4|3\/4|\[.+\])$/);if(W){let e=W[1],r=W[2];return r==="0"?r="none":r.startsWith("[")&&r.endsWith("]")||($[r]?r=$[r]:r=g(r,l)),i({cat:"layout",val:a+e+":"+r})}let y=t.match(/^(-?)translate-([xy])-(\d+|px|full|1\/2|1\/3|2\/3|1\/4|2\/4|3\/4|\[.+\])$/);if(y){let e=y[1]==="-",r=y[2],n=y[3];return n.startsWith("[")&&n.endsWith("]")?e&&(n=`[-${n.slice(1,-1)}]`):$[n]?(n=$[n],e&&(n=`-${n}`)):n==="0"?n="0":(n=g(n,l),e&&(n=`-${n}`)),i({cat:"visual",val:a+`translate-${r}:${n}`})}if(t==="outline-none")return i({cat:"visual",val:a+"outline:none"});let T=t.match(/^order-(\d+|first|last|none)$/);if(T)return i({cat:"layout",val:a+"order:"+T[1]});let E=t.match(/^grid-cols-(\d+|none)$/);if(E)return i({cat:"layout",val:a+"grid-cols:"+E[1]});let H=t.match(/^col-span-(\d+|full)$/);if(H)return i({cat:"layout",val:a+"col-span:"+H[1]});let L=t.match(/^grid-rows-(\d+|none)$/);if(L)return i({cat:"layout",val:a+"grid-rows:"+L[1]});let U=t.match(/^row-span-(\d+|full)$/);if(U)return i({cat:"layout",val:a+"row-span:"+U[1]});let D=t.match(/^opacity-(\d+)$/);if(D)return i({cat:"visual",val:a+"opacity:"+D[1]});let F=t.match(/^bg-gradient-to-(t|tr|r|br|b|bl|l|tl)$/);if(F)return i({cat:"visual",val:a+"bg-image:gradient-to-"+F[1]});let N=t.match(/^from-(.+)$/);if(N)return i({cat:"visual",val:a+"from:"+N[1]});let X=t.match(/^via-(.+)$/);if(X)return i({cat:"visual",val:a+"via:"+X[1]});let Y=t.match(/^to-(.+)$/);if(Y)return i({cat:"visual",val:a+"to:"+Y[1]});let B=t.match(/^transition(?:-(all|colors|opacity|shadow|transform|none))?$/);if(B){let e=B[1]||"all";return i({cat:"visual",val:a+"transition:"+e})}let G=t.match(/^duration-(\d+)$/);if(G){let e=parseInt(G[1]),r;return e<=75?r="instant":e<=100?r="quick":e<=150?r="fast":e<=200?r="normal":e<=300?r="slow":e<=500?r="slower":r="lazy",i({cat:"visual",val:a+"duration:"+r})}let I=t.match(/^ease-(linear|in|out|in-out)$/);if(I)return i({cat:"visual",val:a+"ease:"+I[1]});let K=t.match(/^ring(?:-(\d+))?$/);if(K){let e=K[1]||"3";if(e==="0")return i({cat:"visual",val:a+"ring:none"});let n={1:"thin",2:"regular",3:"small",4:"medium",8:"big"}[e]||`[${e}px]`;return i({cat:"visual",val:a+"ring:"+n})}let O=t.match(/^ring-offset-(\d+)$/);if(O)return i({cat:"visual",val:a+"ring-offset:"+O[1]});let P=t.match(/^ring-((?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose|white|black)(?:-\d+)?)$/);if(P)return i({cat:"visual",val:a+"ring-color:"+P[1]});let R=t.match(/^divide-x-((?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose|white|black)(?:-\d+)?)$/);if(R)return i({cat:"visual",val:a+"divide-x:"+R[1]});let J=t.match(/^divide-y-((?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose|white|black)(?:-\d+)?)$/);if(J)return i({cat:"visual",val:a+"divide-y:"+J[1]});let Q=t.match(/^divide-((?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose|white|black)(?:-\d+)?)$/);if(Q)return i({cat:"visual",val:a+"divide:"+Q[1]});let Z=t.match(/^divide-(\d+)$/);if(Z)return i({cat:"visual",val:a+"divide-w:"+k(Z[1],l)});if(t==="divide-x-reverse")return i({cat:"visual",val:a+"divide-x:reverse"});if(t==="divide-y-reverse")return i({cat:"visual",val:a+"divide-y:reverse"});let _=t.match(/^divide-x-(\d+)$/);if(_)return i({cat:"visual",val:a+"divide-x-w:"+k(_[1],l)});if(t==="divide-x")return i({cat:"visual",val:a+"divide-x-w:thin"});if(t==="divide-y")return i({cat:"visual",val:a+"divide-y-w:thin"});let ee=t.match(/^divide-y-(\d+)$/);if(ee)return i({cat:"visual",val:a+"divide-y-w:"+k(ee[1],l)});let te=t.match(/^divide-(solid|dashed|dotted|double|none)$/);return te?i({cat:"visual",val:a+"divide-style:"+te[1]}):null}function le(s,l){let m=s.trim().split(/\s+/).filter(u=>u),a=[],t=[],f=[],i=[],v=[],h=[],d=(u,o)=>{u.includes(o)||u.push(o)};for(let u of m){let o=ne(u,l);if(o){let p=Array.isArray(o)?o:[o];for(let c of p)c.cat==="layout"?d(a,c.val):c.cat==="space"?d(t,c.val):c.cat==="visual"?d(f,c.val):c.cat==="interact"?d(i,c.val):c.cat==="listens"&&d(v,c.val)}else h.push(u)}return{layout:a,space:t,visual:f,interact:i,listens:v,unknown:h}}function oe(s,l){return s.replace(/class=(['"])([^"']+)\1/g,(m,a,t)=>{let{layout:f,space:i,visual:v,interact:h,listens:d,unknown:u}=le(t,l),o=[];return f.length&&o.push(`layout="${f.join(" ")}"`),i.length&&o.push(`space="${i.join(" ")}"`),v.length&&o.push(`visual="${v.join(" ")}"`),h.length&&o.push(`interact="${h.join(" ")}"`),d.length&&o.push(`listens="${d.join(" ")}"`),u.length&&o.push(`class="${u.join(" ")}"`),o.join(" ")||'class=""'})}typeof window<"u"&&(window.SenangStartTW={convertClass:ne,convertClasses:le,convertHTML:oe,scales:{spacing:S,radius:ae,shadow:ie,fontSize:re},mappings:{layout:z,visual:C}});})();
2
+ (()=>{var C={0:"none",px:"thin",.5:"regular",1:"tiny",1.5:"tiny-2x",2:"small",2.5:"small-2x",3:"small-3x",3.5:"small-4x",4:"medium",5:"medium-2x",6:"medium-3x",7:"medium-4x",8:"large",9:"large-2x",10:"large-3x",11:"large-4x",12:"big",14:"big-2x",16:"big-3x",20:"big-4x",24:"giant",28:"giant-2x",32:"giant-3x",36:"giant-4x",40:"vast",44:"vast-2x",48:"vast-3x",52:"vast-4x",56:"vast-5x",60:"vast-6x",64:"vast-7x",72:"vast-8x",80:"vast-9x",96:"vast-10x",full:"[100%]",screen:"[100vw]",auto:"auto"},pe={none:"none",sm:"small","":"small",md:"small",lg:"medium",xl:"medium","2xl":"big","3xl":"big",full:"round"},ge={none:"none",sm:"small","":"small",md:"medium",lg:"big",xl:"giant","2xl":"giant",inner:"none"},xe={xs:"mini",sm:"small",base:"base",lg:"large",xl:"big","2xl":"huge","3xl":"grand","4xl":"giant","5xl":"mount","6xl":"mega","7xl":"giga","8xl":"tera","9xl":"hero"},ye={none:"none",tight:"tight",snug:"snug",normal:"normal",relaxed:"relaxed",loose:"loose"},ke={tighter:"tighter",tight:"tight",normal:"normal",wide:"wide",wider:"wider",widest:"widest"},$e={0:"base",10:"low",20:"low",30:"low",40:"low",50:"mid",60:"high",70:"high",80:"high",90:"high",100:"high",auto:"auto"},b={"1/2":"half","1/3":"third","2/3":"third-2x","1/4":"quarter","2/4":"half","3/4":"quarter-3x",full:"full"},V={container:"container",flex:"flex","inline-flex":"inline-flex",grid:"grid","inline-grid":"inline-grid",block:"block","inline-block":"inline",hidden:"hidden","flex-row":"row","flex-col":"col","flex-row-reverse":"row-reverse","flex-col-reverse":"col-reverse","flex-wrap":"wrap","flex-nowrap":"nowrap","flex-wrap-reverse":"wrap-reverse","flex-grow":"grow","flex-grow-0":"grow-0",grow:"grow","grow-0":"grow-0","flex-shrink":"shrink","flex-shrink-0":"shrink-0",shrink:"shrink","shrink-0":"shrink-0","flex-1":"flex:1","flex-auto":"flex:auto","flex-initial":"flex:initial","flex-none":"flex:none","justify-start":"justify:start","justify-end":"justify:end","justify-center":"justify:center","justify-between":"justify:between","justify-around":"justify:around","justify-evenly":"justify:evenly","items-start":"items:start","items-end":"items:end","items-center":"items:center","items-baseline":"items:baseline","items-stretch":"items:stretch","self-auto":"self:auto","self-start":"self:start","self-end":"self:end","self-center":"self:center","self-stretch":"self:stretch",relative:"relative",absolute:"absolute",fixed:"fixed",sticky:"sticky",static:"static","overflow-auto":"overflow:auto","overflow-hidden":"overflow:hidden","overflow-visible":"overflow:visible","overflow-scroll":"overflow:scroll","object-contain":"object:contain","object-cover":"object:cover","object-fill":"object:fill","object-none":"object:none","object-scale-down":"object:scale-down"},A={italic:"italic","not-italic":"not-italic",antialiased:"antialiased","subpixel-antialiased":"subpixel-antialiased",uppercase:"uppercase",lowercase:"lowercase",capitalize:"capitalize","normal-case":"normal-case",underline:"underline",overline:"overline","line-through":"line-through","no-underline":"no-underline","decoration-solid":"decoration-solid","decoration-double":"decoration-double","decoration-dotted":"decoration-dotted","decoration-dashed":"decoration-dashed","decoration-wavy":"decoration-wavy",truncate:"truncate","text-ellipsis":"text-ellipsis","text-clip":"text-clip","text-wrap":"text-wrap","text-nowrap":"text-nowrap","text-balance":"text-balance","text-pretty":"text-pretty","whitespace-normal":"whitespace-normal","whitespace-nowrap":"whitespace-nowrap","whitespace-pre":"whitespace-pre","whitespace-pre-line":"whitespace-pre-line","whitespace-pre-wrap":"whitespace-pre-wrap","whitespace-break-spaces":"whitespace-break-spaces","break-normal":"break-normal","break-words":"break-words","break-all":"break-all","break-keep":"break-keep","hyphens-none":"hyphens-none","hyphens-manual":"hyphens-manual","hyphens-auto":"hyphens-auto","list-none":"list-none","list-disc":"list-disc","list-decimal":"list-decimal","list-inside":"list-inside","list-outside":"list-outside","cursor-auto":"cursor:auto","cursor-default":"cursor:default","cursor-pointer":"cursor:pointer","cursor-wait":"cursor:wait","cursor-text":"cursor:text","cursor-move":"cursor:move","cursor-not-allowed":"cursor:not-allowed","cursor-grab":"cursor:grab","cursor-grabbing":"cursor:grabbing","select-none":"select:none","select-text":"select:text","select-all":"select:all","select-auto":"select:auto","pointer-events-none":"pointer-events:none","pointer-events-auto":"pointer-events:auto","appearance-none":"appearance:none","appearance-auto":"appearance:auto",perspective:"perspective","perspective-origin":"perspective-origin","transform-style":"transform-style","backface-visibility":"backface",mask:"mask","mask-image":"mask-image","mask-mode":"mask-mode","mask-origin":"mask-origin","mask-position":"mask-position","mask-repeat":"mask-repeat","mask-size":"mask-size","mask-type":"mask-type"};function p(s,l){return s&&s.startsWith("[")&&s.endsWith("]")?s:l?["full","screen","auto"].includes(s)?C[s]||`[${s}]`:`tw-${s}`:C[s]||`[${s}]`}var Me={0:"none",1:"thin",2:"regular",3:"thick",4:"tiny",8:"small"};function j(s,l){return l?`tw-${s}`:Me[s]||`[${s}px]`}function be(s,l){let m=s.match(/^(sm:|md:|lg:|xl:|2xl:|hover:|focus:|focus-visible:|active:|disabled:|dark:|group-hover:|peer-hover:|group-focus:|peer-focus:|group-active:|peer-active:|peer-check:|group-open:|peer-open:)(.+)$/),a="",t=s,h=null;if(m){let e=m[1].slice(0,-1);if(["sm","md","lg","xl","2xl"].includes(e))a=`tw-${e}:`;else if(e.startsWith("group-")||e.startsWith("peer-")){let r={hover:"hover",focus:"focus",active:"active",open:"expanded",check:"checked"},n=e.split("-")[1];a=`${r[n]||n}:`,e.startsWith("peer-")&&(h={cat:"listens",val:"peer"})}else a=m[1];t=m[2]}if(t==="group")return{cat:"layout",val:"hoverable focusable pressable expandable"};if(t==="peer")return[{cat:"layout",val:"hoverable focusable pressable expandable"},{cat:"interact",val:"peer"}];let i=e=>e?h?Array.isArray(e)?[...e,h]:[e,h]:e:null;if(V[t])return i({cat:"layout",val:a+V[t]});if(A[t])return i({cat:"visual",val:a+A[t]});let f=t.match(/^text-((?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose|white|black)(?:-\d+)?)$/);if(f)return i({cat:"visual",val:a+"text:"+f[1]});if(["text-left","text-center","text-right","text-justify"].includes(t))return i({cat:"visual",val:a+"text:"+t.replace("text-","")});let v=t.match(/^text-(xs|sm|base|lg|xl|2xl|3xl|4xl|5xl|6xl|7xl|8xl|9xl)$/);if(v){let e=l?`tw-${v[1]}`:xe[v[1]]||v[1];return i({cat:"visual",val:a+"text-size:"+e})}let d=t.match(/^leading-(\[.+\]|none|tight|snug|normal|relaxed|loose)$/);if(d){let e=d[1];return i({cat:"visual",val:a+"leading:"+(ye[e]||e)})}let u=t.match(/^tracking-(\[.+\]|tighter|tight|normal|wide|wider|widest)$/);if(u){let e=u[1];return i({cat:"visual",val:a+"tracking:"+(ke[e]||e)})}let o=t.match(/^bg-((?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose|white|black)(?:-\d+)?|transparent|current|inherit)$/);if(o){let e=o[1];return i(e==="transparent"?{cat:"visual",val:a+"bg:transparent"}:e==="current"?{cat:"visual",val:a+"bg:currentColor"}:e==="inherit"?{cat:"visual",val:a+"bg:inherit"}:{cat:"visual",val:a+"bg:"+e})}let w=t.match(/^border-((?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose|white|black|transparent|current|inherit)(?:-\d+)?)$/);if(w){let e=w[1];return e==="current"&&(e="currentColor"),i({cat:"visual",val:a+"border:"+e})}let c=t.match(/^border-([trbl])-((?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose|white|black|transparent|current|inherit)(?:-\d+)?)$/);if(c){let e=c[1],r=c[2];return r==="current"&&(r="currentColor"),i({cat:"visual",val:a+`border-${e}:${r}`})}let y=t.match(/^p([trblxy])?-(.+)$/);if(y){let e=y[1]?"-"+y[1]:"";return i({cat:"space",val:a+"p"+e+":"+p(y[2],l)})}let k=t.match(/^-?m([trblxy])?-(\[.+\]|\d+\.?\d*|px|auto|full|screen)$/);if(k){let e=t.startsWith("-"),r=k[1]?"-"+k[1]:"",n=p(k[2],l);return e&&n&&(n.startsWith("[")&&n.endsWith("]")?n=`[-${n.slice(1,-1)}]`:n=`-${n}`),i({cat:"space",val:a+"m"+r+":"+n})}let $=t.match(/^gap-([xy])?-?(.+)$/);if($){let e=$[1]?"-"+$[1]:"";return i({cat:"space",val:a+"g"+e+":"+p($[2],l)})}let S=t.match(/^(min-w|max-w|w)-(.+)$/);if(S){let e=S[1],r=S[2],x={max:"[max-content]",min:"[min-content]",fit:"[fit-content]",prose:"[65ch]"}[r]||p(r,l);return i({cat:"space",val:a+e+":"+x})}let z=t.match(/^(min-h|max-h|h)-(.+)$/);if(z){let e=z[1],r=z[2],x={screen:"[100vh]",svh:"[100svh]",lvh:"[100lvh]",dvh:"[100dvh]",max:"[max-content]",min:"[min-content]",fit:"[fit-content]"}[r]||p(r,l);return i({cat:"space",val:a+e+":"+x})}let q=t.match(/^rounded(?:-(.+))?$/);if(q){let e=q[1]||"",r=l?e===""?"tw-DEFAULT":`tw-${e}`:pe[e]||"medium";return i({cat:"visual",val:a+"rounded:"+r})}let H=t.match(/^shadow(?:-(.+))?$/);if(H){let e=H[1]||"",r=l?e===""?"tw-DEFAULT":`tw-${e}`:ge[e]||"medium";return i({cat:"visual",val:a+"shadow:"+r})}let I=t.match(/^font-(thin|extralight|light|normal|medium|semibold|bold|extrabold|black)$/);if(I)return i({cat:"visual",val:a+"font:tw-"+I[1]});let g=t.match(/^border(?:-([trblxy]))?(?:-(\d+))?$/);if(g&&(g[2]||!g[1]&&t==="border")){let e=g[1]?"-"+g[1]+"-w":"-w",r=g[2]||"1";return i({cat:"visual",val:a+"border"+e+":"+j(r,l)})}let W=t.match(/^(top|right|bottom|left|inset|inset-x|inset-y)-(\d+|px|auto|full|1\/2|1\/3|2\/3|1\/4|2\/4|3\/4|\[.+\])$/);if(W){let e=W[1],r=W[2];return r&&r.startsWith("[")&&r.endsWith("]")||(b[r]?r=b[r]:r==="0"?r="0":r=p(r,l)),i({cat:"layout",val:a+e+":"+r})}let M=t.match(/^(-?)translate-([xy])-(\d+|px|full|1\/2|1\/3|2\/3|1\/4|2\/4|3\/4|\[.+\])$/);if(M){let e=M[1]==="-",r=M[2],n=M[3];return n&&n.startsWith("[")&&n.endsWith("]")?e&&(n=`[-${n.slice(1,-1)}]`):b[n]?(n=b[n],e&&(n=`-${n}`)):n==="0"?n="0":(n=p(n,l),e&&(n=`-${n}`)),i({cat:"visual",val:a+`translate-${r}:${n}`})}if(t==="outline-none")return i({cat:"visual",val:a+"outline:none"});let T=t.match(/^order-(\d+|first|last|none)$/);if(T)return i({cat:"layout",val:a+"order:"+T[1]});let E=t.match(/^-?z-(\d+|auto)$/);if(E){let e=t.startsWith("-"),r=E[1],n=$e[r]||r;return e&&(n=`-${n}`),i({cat:"layout",val:a+"z:"+n})}let L=t.match(/^basis-(\[.+\]|\d+\.?\d*|auto|full|1\/2|1\/3|2\/3|1\/4|2\/4|3\/4)$/);if(L){let e=L[1];return e.startsWith("[")&&e.endsWith("]")||(b[e]?e=b[e]:e==="0"&&(e="0")),i({cat:"layout",val:a+"basis:"+e})}let N=t.match(/^grid-cols-(\d+|none)$/);if(N)return i({cat:"layout",val:a+"grid-cols:"+N[1]});let U=t.match(/^col-span-(\d+|full)$/);if(U)return i({cat:"layout",val:a+"col-span:"+U[1]});let D=t.match(/^grid-rows-(\d+|none)$/);if(D)return i({cat:"layout",val:a+"grid-rows:"+D[1]});let F=t.match(/^row-span-(\d+|full)$/);if(F)return i({cat:"layout",val:a+"row-span:"+F[1]});let R=t.match(/^opacity-(\d+)$/);if(R)return i({cat:"visual",val:a+"opacity:"+R[1]});let X=t.match(/^bg-gradient-to-(t|tr|r|br|b|bl|l|tl)$/);if(X)return i({cat:"visual",val:a+"bg-image:gradient-to-"+X[1]});let Y=t.match(/^from-(.+)$/);if(Y)return i({cat:"visual",val:a+"from:"+Y[1]});let B=t.match(/^via-(.+)$/);if(B)return i({cat:"visual",val:a+"via:"+B[1]});let G=t.match(/^to-(.+)$/);if(G)return i({cat:"visual",val:a+"to:"+G[1]});let K=t.match(/^transition(?:-(all|colors|opacity|shadow|transform|none))?$/);if(K){let e=K[1]||"all";return i({cat:"visual",val:a+"transition:"+e})}let O=t.match(/^duration-(\d+)$/);if(O){let e=parseInt(O[1]),r;return e<=75?r="instant":e<=100?r="quick":e<=150?r="fast":e<=200?r="normal":e<=300?r="slow":e<=500?r="slower":r="lazy",i({cat:"visual",val:a+"duration:"+r})}let P=t.match(/^ease-(linear|in|out|in-out)$/);if(P)return i({cat:"visual",val:a+"ease:"+P[1]});let J=t.match(/^ring(?:-(\d+))?$/);if(J){let e=J[1]||"3";if(e==="0")return i({cat:"visual",val:a+"ring:none"});let n={1:"thin",2:"regular",3:"small",4:"medium",8:"big"}[e]||`[${e}px]`;return i({cat:"visual",val:a+"ring:"+n})}let Q=t.match(/^ring-offset-(\d+)$/);if(Q)return i({cat:"visual",val:a+"ring-offset:"+Q[1]});let Z=t.match(/^ring-((?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose|white|black)(?:-\d+)?)$/);if(Z)return i({cat:"visual",val:a+"ring-color:"+Z[1]});let _=t.match(/^divide-x-((?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose|white|black)(?:-\d+)?)$/);if(_)return i({cat:"visual",val:a+"divide-x:"+_[1]});let ee=t.match(/^divide-y-((?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose|white|black)(?:-\d+)?)$/);if(ee)return i({cat:"visual",val:a+"divide-y:"+ee[1]});let te=t.match(/^divide-((?:slate|gray|zinc|neutral|stone|red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose|white|black)(?:-\d+)?)$/);if(te)return i({cat:"visual",val:a+"divide:"+te[1]});let ae=t.match(/^divide-(\d+)$/);if(ae)return i({cat:"visual",val:a+"divide-w:"+j(ae[1],l)});if(t==="divide-x-reverse")return i({cat:"visual",val:a+"divide-x:reverse"});if(t==="divide-y-reverse")return i({cat:"visual",val:a+"divide-y:reverse"});let ie=t.match(/^divide-x-(\d+)$/);if(ie)return i({cat:"visual",val:a+"divide-x-w:"+j(ie[1],l)});if(t==="divide-x")return i({cat:"visual",val:a+"divide-x-w:thin"});if(t==="divide-y")return i({cat:"visual",val:a+"divide-y-w:thin"});let re=t.match(/^divide-y-(\d+)$/);if(re)return i({cat:"visual",val:a+"divide-y-w:"+j(re[1],l)});let ne=t.match(/^divide-(solid|dashed|dotted|double|none)$/);if(ne)return i({cat:"visual",val:a+"divide-style:"+ne[1]});let le=t.match(/^border-(solid|dashed|dotted|double|none)$/);if(le)return i({cat:"visual",val:a+"border-style:"+le[1]});let se=t.match(/^blur-(0|sm|md|lg|xl|2xl|3xl)$/);if(se){let e={0:"none",sm:"tiny",md:"small",lg:"medium",xl:"big","2xl":"giant","3xl":"vast"};return i({cat:"visual",val:a+"blur:"+e[se[1]]})}let oe=t.match(/^brightness-(0|50|75|90|95|100|105|110|125|150|200)$/);if(oe){let e={0:"dim",50:"dim",75:"dark",90:"dark",95:"dark",100:"normal",105:"bright",110:"bright",125:"vivid",150:"vivid",200:"vivid"};return i({cat:"visual",val:a+"brightness:"+e[oe[1]]})}let ce=t.match(/^contrast-(0|50|75|100|125|150|200)$/);if(ce){let e={0:"low",50:"low",75:"reduced",100:"normal",125:"high",150:"high",200:"max"};return i({cat:"visual",val:a+"contrast:"+e[ce[1]]})}let ue=t.match(/^grayscale(0)?$/);if(ue){let e=ue[1]==="0"?"none":"full";return i({cat:"visual",val:a+"grayscale:"+e})}let de=t.match(/^hue-rotate-(0|15|30|60|90|180)$/);if(de)return i({cat:"visual",val:a+"hue-rotate:"+de[1]});let he=t.match(/^invert(0)?$/);if(he){let e=he[1]==="0"?"none":"full";return i({cat:"visual",val:a+"invert:"+e})}let ve=t.match(/^saturate-(0|50|100|150|200)$/);if(ve){let e={0:"none",50:"low",100:"normal",150:"high",200:"vivid"};return i({cat:"visual",val:a+"saturate:"+e[ve[1]]})}let fe=t.match(/^sepia(0)?$/);if(fe){let e=fe[1]==="0"?"none":"full";return i({cat:"visual",val:a+"sepia:"+e})}let me=t.match(/^animate-(none|spin|ping|pulse|bounce)$/);return me?i({cat:"visual",val:a+"animate:"+me[1]}):null}function we(s,l){let m=s.trim().split(/\s+/).filter(u=>u),a=[],t=[],h=[],i=[],f=[],v=[],d=(u,o)=>{u.includes(o)||u.push(o)};for(let u of m){let o=be(u,l);if(o){let w=Array.isArray(o)?o:[o];for(let c of w)c.cat==="layout"?d(a,c.val):c.cat==="space"?d(t,c.val):c.cat==="visual"?d(h,c.val):c.cat==="interact"?d(i,c.val):c.cat==="listens"&&d(f,c.val)}else v.push(u)}return{layout:a,space:t,visual:h,interact:i,listens:f,unknown:v}}function je(s,l){return s.replace(/class=(['"])([^"']+)\1/g,(m,a,t)=>{let{layout:h,space:i,visual:f,interact:v,listens:d,unknown:u}=we(t,l),o=[];return h.length&&o.push(`layout="${h.join(" ")}"`),i.length&&o.push(`space="${i.join(" ")}"`),f.length&&o.push(`visual="${f.join(" ")}"`),v.length&&o.push(`interact="${v.join(" ")}"`),d.length&&o.push(`listens="${d.join(" ")}"`),u.length&&o.push(`class="${u.join(" ")}"`),o.join(" ")||'class=""'})}typeof window<"u"&&(window.SenangStartTW={convertClass:be,convertClasses:we,convertHTML:je,scales:{spacing:C,radius:pe,shadow:ge,fontSize:xe},mappings:{layout:V,visual:A}});})();